web-dev-qa-db-ja.com

ログインにリダイレクトされるときのKeycloak CORSの問題

nodeJS keycloak adapter をExpressアプリケーションで動作させようとしていますが、keycloakミドルウェアで保護したルートのログインページにリダイレクトしようとすると、CORSの問題が発生します。

XMLHttpRequestを読み込めません http://192.168.132.44:8080/auth/realms/Actora/protocol/openid-connect/auth?client_id=actora-test&state=0e9c9778-c41b-4aa8-8052-d0f0125045ac&redirect_uri=http%3A %2F%2Flocalhost%3A5001%2Fauth%2Fchecktoken%3Fauth_callback%3D1&scope = openid&response_type = code 。プリフライト要求への応答がアクセス制御チェックに合格しません:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http:// localhost:5001 'はアクセスを許可されません。

キークローククライアントの設定で、「*」という単一の値をWeb Origins構成セクションに追加しました。

このエクスプレスガイドに従って、node corsライブラリを使用してnode expressアプリケーションでcorsも有効にしました here

var cors =  require('cors'),
  app = express();

app.use(cors());
app.options('*', cors()); //enable for all pre-flight requests

違いが生じる場合に備えて、バージョン3.2.1のキークロークを使用しています(新しいバージョンはRC版として公開されています)

誰かが同様の問題に直面し、なんとか解決しましたか?私は多くのJBOSSメーリングリストスレッドと他のスタックオーバーフローを掘り下げて調べており、キークローク管理サイトのクライアントのWeb Origins構成セクションに「*」エントリを追加するだけの簡単さを提案しているようですが、これは当てはまりません私。

ありがとう

9
mindparse

この問題についても、mindparseで取り組んでいます。

ここでの重要な問題は、keycloak管理ポータルで「web origins」設定を正しく構成したにもかかわらず、keycloakサーバーがACCESS-CONTROL-ALLOW-Originヘッダーで応答しないことです。

プロセスの詳細なフローは次のとおりです。

  1. ユーザーがノードエクスプレスサーバーでキークロークで保護されたルートを呼び出そうとしました
  2. Keycloakミドルウェアは、ユーザーが認証されていないことを検出し、Keycloakサーバーがホストするカスタムログインページへの302(リダイレクト)で要求に応答します。
  3. ブラウザは、OPTIONSリクエストをキークロークサーバーに送信して、クロスオリジンリクエストであるかどうかを確認します。
  4. キークロークサーバーの応答には、ACCESS-CONTROL-ALLOW- Originヘッダーが含まれていないため、このリクエストを行う権限があることをブラウザーに通知します。
  5. ブラウザはこの応答を読み取り、Originチェックを許可するアクセス制御に合格しなかったため、フォローアップ要求を行いません。
12
Andy

私はまったく同じ問題を抱えていました。 Keycloak 6.0.1を使用しています

私の場合、_"enable-cors": true_を_keycloak.json_に追加する必要がありましたJavaバックエンドサーバー。

その後、別の問題が発生しました:_401 UNAUTHORIZED_。 この投稿 問題を解決しました

2
Zerotwelve

Keycloakのクライアント設定の「Web Origins」フィールドに「 http:// localhost:8081 」のようにアプリのURLを入力するだけです。

0
Janet W.