如果Kerberos身份validation(由于某种原因)失败,有没有办法使Apache恢复到不同的身份validation方法? validation方法的顺序应该是:
RSA令牌authentication由没有AD帐户的外部用户使用。
让我知道如果你需要更多的信息。 谢谢。
我目前的configuration如下:
<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>
authentication别名如下:
<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>
mod_auth_kerb模块的网站对此有点不清楚,一方面说AuthType必须设置为Kerberos,另一方面也暗示“如果你的AuthType是Basic”,它实质上使用AuthType Basic提供的用户名/密码对检查您的Kerberos服务器。
你对Kerberos的其他指令,特别是KrbDelegateBasic on ,似乎没有logging在这个模块的sourceforge页面上,这让我想知道你正在使用哪个模块版本。
但是,暂时搁置一下,除非mod_auth_kerb模块能以某种方式将值传递给下一个模块可以理解的链中的下一个authentication模块,否则这可能不起作用。
作为一个testing,我KrbMethodNegotiate AuthType更改为Basic ,将KrbMethodNegotiate为off ,并将KrbMethodK5Passwd为on ,然后查看是否更改了该行为。 这有望使mod_auth_kerb以其他模块可以理解的方式收集login数据,阻止协商身份validation方法,并尝试收集用户名/密码而不是票据。
谈判的一部分是很重要的,因为这是为每个连接完成的,因此,如果客户端浏览器协商一个方法,拧紧下一个身份validation方法,它将永远不会超过Kerberos身份validation。
我会说,我从来没有在Apache上configurationKerberosauthentication,所以这是一个猜测。 我已经完成了LDAP回落到基于文件的基本身份validation,所以我知道一般情况下,贯穿机制起作用。