web-dev-qa-db-ja.com

mod_auth_kerbが失敗した場合のフォールバック認証

Kerberos認証が(何らかの理由で)失敗した場合にApacheが別の認証方法にフォールバックする方法はありますか?認証方法の順序は次のとおりです。

  • Kerberos
  • Active Directory
  • RSAトークン

RSAトークン認証は、ADアカウントを持たない外部の関係者によって使用されます。

さらに情報が必要な場合はお知らせください。ありがとう。

私の現在の設定は次のとおりです。

<Directory "/path/to/directory">
  AuthType Kerberos
  AuthName "Please provide credentials to log in"
  KrbAuthoritative off
  AuthzLDAPAuthoritative off
  AuthBasicAuthoritative off
  AuthBasicProvider this-sso this-ad this-radius
  Require valid-user
  SSLRequireSSL
</Directory>

認証エイリアスは次のとおりです。

<AuthnProviderAlias kerberos this-sso>
  KrbAuthRealms THIS.LOCAL
  KrbMethodNegotiate on
  KrbMethodK5Passwd off
  KrbDelegateBasic on
  Krb5Keytab /etc/Apache2/this.keytab.key
  KrbServiceName HTTP
  KrbVerifyKDC off
</AuthnProviderAlias>

<AuthnProviderAlias ldap this-ad>
  Include /etc/Apache2/.ldapbinddn
  AuthLDAPURL "ldaps://srv1.this.local srv2.this.local:636/OU=DIR,DC=this,DC=local?sAMAccountName?sub?(objectClass=user)"
</AuthnProviderAlias>

<AuthnProviderAlias xradius this-radius>
  AuthXRadiusAddServer "rsasrv1.this.local:1812" "Shared_key_here"
  AuthXRadiusTimeout 7
  AuthXRadiusRetries 2
  AuthXRadiusRejectBlank on
</AuthnProviderAlias>
3
Ian

Mod_auth_kerbモジュールのWebサイトは、これについてやや不明確であり、ある時点でAuthTypeをKerberosに設定する必要があると述べていますが、「AuthTypeがBasicの場合」、基本的にユーザー名とパスワードのペアを使用することも示唆しています。 AuthType BasicがKerberosサーバーに対してチェックするために提供するもの。

Kerberos用の他のディレクティブ(具体的にはKrbDelegateBasic on)は、このモジュールのsourceforgeページに記載されていないようで、このモジュールのどのバージョンを使用しているのか不思議に思います。

ただし、それはさておき、mod_auth_kerbモジュールが、チェーン内の次の認証モジュールに取得した値を、次のモジュールが理解できる方法で何らかの方法で渡すことができない限り、これは機能しない可能性があります。

テストとして、AuthTypeBasicに、KrbMethodNegotiateoffに、KrbMethodK5Passwdonに変更します。それが動作をまったく変えるかどうかを確認します。これにより、mod_auth_kerbが他のモジュールが理解できる方法でログインデータを収集し、認証方法がネゴシエートされないようにし、チケットではなくユーザー名/パスワードを収集しようとすることが期待されます。

ネゴシエーションの部分は重要です。これは接続ごとに行われるため、クライアントブラウザーが次の認証方法を台無しにする方法をネゴシエートする場合、Kerberos認証を通過することはありません。

私はApacheでKerberos認証を構成したことがないので、これは多少の推測です。ただし、LDAPをファイルベースの基本認証にフォールバックしたので、フォールスルーメカニズムが一般的に機能することはわかっています。

1
malcolmpdx