2

私は、Active Directory サーバーに対して認証を行う非常にバニラな spnego SSO セットアップを持っています。IE SSO には、ユーザーにプロンプ​​トを表示することなく正しく認証する NEGOTIATE ヘッダー Cookie が含まれています。Firefox と Chrome には SSO Cookie が含まれていないため、基本認証にフェールバックします。ユーザー名とパスワードを正しく受け取り、正しくログインします。

ただし、Firefox では 1 回プロンプトが表示されるのに、Chrome では 2 回パスワードの入力を求めるプロンプトが表示されるのがちょっと気になるところです。

なぜそれが2回促されるのかについてのアイデアはありますか?

完全を期すために以下を設定します。

<filter>

    <filter-name>SpnegoHttpFilter</filter-name>

    <filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>

    <init-param>
        <param-name>spnego.allow.basic</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.localhost</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.unsecure.basic</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.client.module</param-name>
        <param-value>spnego-client</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.krb5.conf</param-name>
        <param-value>xxxxxxxxxxxxx/krb5.conf</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.conf</param-name>
        <param-value>xxxxxxxxxxxx/login.conf</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.preauth.username</param-name>
        <param-value>xxxxxxxxxxxxxxxx</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.preauth.password</param-name>
        <param-value>xxxxxxxxxxxxxxxx</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.server.module</param-name>
        <param-value>spnego-server</param-value>
    </init-param>



    <init-param>
        <param-name>spnego.prompt.ntlm</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.delegation</param-name>
        <param-value>true</param-value>
    </init-param>


</filter>
4

1 に答える 1

3

これは、2 回ポップアップする理由の説明ではありませんが、Chrome でデバッグする方法です。

chrome:net-internals#eventsを参照すると、401 認証ネゴシエーションが表示されます。401 リクエストとレスポンスは Chrome 開発ツールのネットワーク タブに表示されないため、これが唯一の手がかりになります。

編集の更新Authorization- Chrome が常に のヘッダーを送信するとは限らないようですdigest。パイプライン処理、認証キャッシュのバグ、または URL が認証を「継承」するヒューリスティックのいずれかが原因です。

https://groups.google.com/d/msg/chromium-discuss/9ASzOBdBrTQ/wUWFlwFYwaMJから

クロムは推測された保護スペースの承認を先制的に送信しないため、そのループに入り続けます。

[...]

ダイジェストのサポートは可能性が高いですが、ダイジェスト認証モデルがパイプラインで壊れているため、少し大ざっぱです (次の nonce は以前のサーバー応答 (Authorization-Info) によって制御されます)。

htdigest は、ページが読み込まれるたびに 2 つのログイン ダイアログを表示していたため、サイトが既にHTTPSセキュリティのために使用していたため、基本認証に切り替えました。AuthorizationBasic と Digest は、トークンを送信する必要がある URL とパスワードまたはトークンをキャッシュする期間を定義しません。そのため、Cookie よりも遅く、安全性が低くなります。今後はこのような計画を避けるように努めます。

于 2017-10-05T00:56:36.840 に答える