5

私はKeycloakサーバーに非常に慣れていないため、これを使用して、インターネット上で開かれているフロントエンドアプリとバックエンドレストAPIを保護したいと考えています. これまでのところ、私が理解して行ったことは、Keycloackで2つのクライアントを作成することです。1つは、アクセスタイプ(Public)でクライアントプロトコル(openid-connect)を使用するフロントエンド用であり、クライアント側では、アダプターを使用してユーザーをKeycloakログインにリダイレクトしていますページを開き、認証してトークンを取得します。ここで、バックエンド (rest-apis) のために、クライアント プロトコル (openid-connect) を再度使用しますが、アクセス タイプ (機密) と認証フローを使用する別のクライアントを作成しました: ブラウザー フローとダイレクト グラント フローの両方がダイレクト グラントであり、その後クライアントIDとクライアントシークレットを取得して、Keycloak REST APIを呼び出します。

ここで、ユーザーがフロントエンドから認証され、トークンを取得し、ヘッダー リクエストを残りの API に送信するときに、いくつかの Keycloak 残りの API を呼び出して、client_id と client_secret を提供してこのトークンを確認します。

フロントエンドで生成したトークンを検証するために、Keycloak の次の REST API を使用しています。

http://localhost:8120/auth/realms/evva_realm/protocol/openid-connect/token/introspect

しかし、結果はそのようになっています:

{
    "active": false
}

バックエンド API が正しくないことを確認して保護するために、間違った API またはアーキテクチャ全体を使用している可能性があります。誰かが問題の場所を理解するのを手伝ってくれますか?

4

1 に答える 1

5

@ user565 私に適したこの中程度の投稿を見つけました。あなたもその恩恵を受けることができると信じています。

基本的に、バックエンド用とフロントエンド用の 2 つのクライアントを作成します。問題は、クライアント スコープ、ロール、および複合ロール機能を利用して、同じロールを共有することです。

お役に立てば幸いです: https://medium.com/devops-dudes/secure-front-end-react-js-and-back-end-node-js-express-rest-api-with-keycloak-daf159f0a94e

于 2021-04-07T00:56:11.070 に答える