我正在使用运行 LAMP 堆栈的 rhel5 来创建内部网。我正尝试使用 IE 和 Firefox 与我们网络上的用户实现 SSO。使用以下模块我可以成功做到这一点:
mod_auth_kerb
我想更进一步,仅允许根据组成员身份访问某些位置。我能够使用 mod_authz_ldap 实现这一点。有没有办法同时使用两者?如果有,有人能举个例子吗?
以下是 SSO kerberos 设置:
<Location /sso/location>
AuthType Kerberos
AuthName "Please Login"
KrbServiceName HTTP
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms DOMAIN.LOCAL
Krb5KeyTab /etc/httpd/keytab
require valid-user
</Location>
以下是仅允许组成员访问的设置:
<Location /allowed/only/for/group>
AuthType Basic
AuthName "Please Login"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=ldapbinduser,CN=Users,DC=domain,DC=local"
AuthLDAPBindPassword ldapbinduserpass
require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
require ldap-group CN=Faculty,CN=Users,DC=domain,DC=local
Satisfy any
</Location>
我读过有关使用 kerberos 进行身份验证,然后使用一些 PHP 代码进行组查找的信息,但我希望这可以严格通过 apache 配置来实现,而不需要更改网页代码。
任何帮助我都非常感谢。谢谢。
...Google 刚刚向我展示了以下内容,供任何使用它的人使用: http://www.stanford.edu/services/webauth/
答案1
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>
这允许所有属于学生/教职员工 AD 组的用户访问后台页面http://intranetsite/students只要 IE/Firefox 配置正确,无需指定登录凭据。
使用 userPrincipalName 而不是 sAMAccountName 是因为 kerberos 模块将 username@REALM 传递给 ldap 模块。
现在我遇到的问题是,如果某人未获得授权,则会出现以下情况:
需要授权 此服务器无法验证您是否有权访问所请求的文档。您提供的凭据有误(例如密码错误),或者您的浏览器无法提供所需的凭据。
有人知道如何让它弹出用户名/密码对话框,以便他们可以尝试备用凭据吗?在未成功获得授权后,我让它要求提供凭据的唯一方法是清除缓存。如果我以经过身份验证但未获得此资源授权的用户身份登录 PC,则无法提供备用凭据(这可能是一件好事)。
答案2
KrbMethodK5Passwd 开启基本身份验证的回退,但您当然会失去密码永远不会离开客户端机器的安全性。