Apache SSO 与 Active Directory 结合并提供基于组的授权

Apache SSO 与 Active Directory 结合并提供基于组的授权

我正在使用运行 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 开启基本身份验证的回退,但您当然会失去密码永远不会离开客户端机器的安全性。

相关内容