5

少数のプライベート グループがアクセスするドメインがあります。だから私は認証を介してアクセスを制御したい。

ドメインには、それぞれ独自のサブドメインを持つアプリケーションのコレクションがインストールされています。例: domain.com、app1.domain.com、app2.domain.com、app3.domain.com

アプリケーションごとに自分自身を認証する必要がないように、シングル サインオン ソリューションがあればいいのにと思います。また、アプリケーションはさまざまな言語 (PHP、Python、および Perl) で記述されているため、Apache モジュールを介してユーザーを認証することが理想的です。

認証をダイジェストするのは初めてですが、良い解決策のようです。私はhtdigest自分のユーザーを作成するために使用しました。ドメインとサブドメインを構成しました (以下を参照)。

ドメインまたはサブドメインのいずれかにアクセスすると、ユーザー名とパスワードの入力を求められます。正しいユーザー名とパスワードを入力すると、認証されてページが読み込まれます。ただし、別のサブドメインに移動すると、ユーザー名とパスワードを再度入力するよう求められます。同じユーザー名とパスワードを入力すると、機能します。

したがって、パスワード ファイルは問題なく、認証も問題ありませんが、問題は の構成にあるようですAuthDigestDomain

複数のドメインでダイジェスト認証を使用する例を見つけるためにネット全体を検索しましたが、問題を解決する具体的な例が見つかりません。

ここの誰かが助けてくれることを願っています。すべての に同じ認証情報を入れDirectoryますか? DirectoryまたはLocationまたはを使用する必要がありFilesますか? 一緒に何かを逃したことがありますか?

前もって感謝します!

以下は、私の Apache 構成の domain.com の例です。

<Directory /var/www>
  AuthType Digest
  AuthName "realm"
  AuthDigestAlgorithm MD5
  AuthDigestDomain / http://domain.com/ http://app1.domain.com/ http://app2.domain.com/ http://app3.domain.com/
  AuthDigestNcCheck Off
  AuthDigestNonceLifetime 0
  AuthDigestQop auth
  AuthDigestProvider file
  AuthUserFile /etc/apache2/.htpasswd-digest
  AuthGroupFile /dev/null
  Require valid-user
</Directory>

次に、app1.domain.com の例を示します。

<Directory /var/lib/app1>
  AuthType Digest
  AuthName "realm"
  AuthDigestAlgorithm MD5
  AuthDigestDomain / http://domain.com/ http://app1.domain.com/ http://app2.domain.com/ http://app3.domain.com/
  AuthDigestNcCheck Off
  AuthDigestNonceLifetime 0
  AuthDigestQop auth
  AuthDigestProvider file
  AuthUserFile /etc/apache2/.htpasswd-digest
  AuthGroupFile /dev/null
  Require valid-user
</Directory>

さらに厄介なことに、これは IE6 を使用している場合には機能しますが、Firefox や Chrome では機能しません。クライアントが認証を適切に送信していないのでしょうか、それともサーバーが正しい資格情報を送信していないのでしょうか?

また、 RFC 2617を読み、PHP を使用して認証ヘッダーを作成し、要求/応答チャレンジが正しいことを確認しました。これはまったく役に立ちませんでした!

4

3 に答える 3

4

ほとんどのブラウザは、ダイジェストの「ドメイン」ディレクティブを尊重せず、他のURIのクレデンシャルを再送信しません。私の知る限り、Operaはそれを尊重する唯一のブラウザです。

Operaの場合、サーバーはドメインリスト内のURIごとに同じ「レルム」文字列で応答する必要があります。つまり、domain = "/ test / example"の場合、サーバーはこれらの両方のURIのWWW-Authenticateヘッダーで「TestRealm--example.com」を送信する必要があります。Operaはセキュリティのために実際のパスワードの代わりにH(A1)を保存するので、これを行うと思います。詳細については、RFC2617をお読みください。

この問題に対する私のクロスブラウザソリューションは次のとおりです。http://travisce.com/arest/

于 2009-12-30T04:13:58.613 に答える
0

私自身、このような経験はありません。しかし、Apacheのドキュメントを見て、これを見つけました:

AuthDigestNonceLifetime ディレクティブは、サーバーの nonce が有効な期間を制御します。[...] 秒が 0 未満の場合、ノンスは期限切れになりません。

したがって、0秒(使用している値)は違法であるか、実際にApacheに0秒後にノンスを期限切れにするように指示しているように思えます。これにより、取得している動作が正確に説明されます。

于 2008-12-13T12:56:33.073 に答える
0

AuthDigestDomain のワイルドカードは役に立ちますか?

    *.domain.com
于 2009-06-22T07:14:20.517 に答える