web-dev-qa-db-ja.com

Kerberos、IE、Firefox、LDAP ActiveDirectoryとのシームレスなSSO

Alias /students /var/www/students

<Location /students>
  KrbServiceName HTTP
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  KrbSaveCredentials off
  KrbAuthRealms DOMAIN.LOCAL
  Krb5KeyTab /etc/httpd/keytab
  KrbAuthoritative off

  AuthType Kerberos
  AuthName "Please Login"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?userPrincipalName?sub?(objectClass=*)"
  AuthLDAPBindDN "CN=ldapsearchuser,CN=Users,DC=domain,DC=local"
  AuthLDAPBindPassword ldapsearchuserpass
  require ldap-group CN=Students,CN=Users,DC=domain,DC=local
  require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
</Location>

これにより、Students/Staff ADグループのいずれかのメンバーであるすべてのユーザーが、IE/Firefoxが適切に構成されていれば、ログイン資格情報を指定することなく、背後のページにアクセスできます http:// intranetsite/students

Kerberosモジュールがusername @ REALMをldapモジュールに渡していたため、sAMAccountNameの代わりにuserPrincipalNameが使用されました。

今、私は誰かが許可されていない場合、彼らが提示されるという問題を抱えています:

承認が必要ですこのサーバーは、要求されたドキュメントへのアクセスが承認されていることを確認できませんでした。間違った資格情報(パスワードの誤りなど)を指定したか、ブラウザが必要な資格情報の提供方法を​​理解していません。

別の資格情報を試すことができるように、ユーザー名/パスワードダイアログボックスをポップアップさせる方法を知っている人はいますか?承認の取得に失敗した後、資格情報を要求するように取得する唯一の方法は、キャッシュをクリアすることです。認証されたユーザーとしてPCにログインしているが、このリソースに対して許可されていないユーザーの場合、代替の資格情報を提供する方法がありません(これは良いことかもしれません)。

6
Brad

私たちは非常によく似た問題に直面しました。最終的に、Internet ExplorerとFirefoxに統合されたNTLMログオンサポートは便利ですが、失敗につながる例外ケースが非常に多いため、アプローチを変更したと結論付けました。

統合認証の問題は、現在ログオンしているユーザー名とパスワードがまだ正しく、リソースへのアクセスが適切に許可されている場合にのみ機能することです。

ただし、機能しない状況は他にもあります。

  • ユーザー名やパスワードが正しくない場合、上記のように代替の資格情報を使用する方法はありません
  • アカウントやパスワードの有効期限が切れている場合、またはパスワードが間違っている場合、ブラウザは「未承認」メッセージを返しますが、どの問題が問題であるかはわかりません。

私たちが標準化したアプローチは、資格情報を受け入れるユーザー名/パスワードのログオンWebページ(アプリケーションの前)を表示することでした。資格情報が送信されると、アプリケーションはそれらの資格情報をディレクトリに対して検証し、それに応じて応答します(.NETの世界では、フォーム認証を使用できます http://msdn.Microsoft.com/en-us/ library/aa480476.aspx このログインページを介してアプリケーションへのアクセスを強制します)。アプリケーションが資格情報の検証を行っているため、ログインの失敗の性質に関する豊富な情報が得られます。さらに、ログインは成功したが、ユーザーに表示する関連情報がある場合でも、たとえば、彼らのパスワードはまもなく期限切れになるなど、これはそうする機会を提供します。

更新:このアプローチを採用する場合は、IISアプリケーションルートへの匿名アクセスを許可する必要があります。これにより、最初に自動を試行せずにログインWebページにアクセスできるようになります。 NTLM認証。NTLM認証を有効のままにするかどうかはあなた次第です。おそらく、一部のクライアントに引き続き自動的にログインさせたい場合があります。

3
Matthew