8

キークローク 1.3.1認証ライブラリを使用していますが、キークロークを で初期化すると{ onLoad: 'login-required' }、IE (11) が無限ループになることに気付きました...

他のブラウザは正常に動作します。

私は基本的にこれをやっています:

keycloak.init({ onLoad: 'login-required' }).success(function(authenticated) {
    console.info(authenticated ? 'authenticated' : 'not authenticated');

    some other stuff...

}).error(function() {
    console.warn('failed to initialize');
});

何が原因なのか、これを解決する方法はありますか? 奇妙なバグが解決されることを期待して、最新バージョン 1.4.0 をインストールしようとしています。

前もって感謝します。

4

3 に答える 3

15

keycloak v1.5.0.Final / Internet Explorer 11 で同じ問題が発生し、最終的に何が起こっているのかを突き止めました。

1.舞台裏

Keycloakのinitメソッドでモード「login-required」または「check-sso」を使用する場合、Keycloak Javascriptアダプターは、ユーザーが認証されていることを定期的にチェックするiframeを設定します。

この iframe は、キークロークのサーバーから取得されます (たとえばhttp(s)://yourkeycloakhost:port):

http(s)://yourkeycloakhost:port/auth/realms/yourrealm/protocol/openid-connect/login-status-iframe.html?client_id=yourclientid&origin=http(s)://yourorigin

そのコンテンツは、認証時にキークロークによって以前に設定された KEYCLOAK_SESSION Cookie にアクセスできる Javascript スクリプトです(つまり、同じドメイン上でhttp(s)://yourkeycloakhost:port)。

2.IEの問題

はい!これは、iframe と Cookie に関する厳格なポリシーを持つ Internet Explorer の問題です。実際には、keycloak iframe は、そのP3P ポリシーにより、ドメイン Cookie にアクセスできませ(Microsoft Internet Explorer は、P3P をサポートする唯一の主要なブラウザーです)。yourkeycloakhost

この問題は、このstackoverflowの質問でよく説明されています

3. 解像度

解決策は、Internet Explorer が Cookie を使用するためにキークロークのドメイン ( ) を信頼するようにするyourkeycloakhostことです。これにより、iframe はKEYCLOAK_SESSIONCookie の値を読み取り、そのデータに登録できます。

これを行うには、キークローク サーバーがHTTP 応答ヘッダーに P3P 情報を追加する必要があります。これは、常に適切なヘッダーを設定する apache または nginx プロキシを使用して行うことができます。私はApacheでそれを行いました.それはmod_headersモジュールです:

Header always set P3P "CP=ALL DSP COR CUR ADM PSA CONi OUR SAM OTR UNR LEG"

W3Cを使用した P3P の詳細を確認したり、このP3P バリデーターを使用して P3P ポリシーを検証したりできます。

4. 結果

キークロークのiframeコードを見ることができます:

var cookie = getCookie('KEYCLOAK_SESSION');
if (cookie) {
    data.loggedIn = true;
    data.session = cookie;
}

ドメインの Cookie がyourkeycloakhostInternet Explorer によって正しく取得されるようになり、問題が修正されました。

于 2015-11-27T17:46:57.620 に答える
4

@François Maturel がバージョン 1.9.3 で説明したように、Keycloak の開発者はこの問題を修正しました。詳細については、問題#2828を参照してください。

于 2016-06-01T14:36:21.060 に答える