Apache mod_auth_kerb和LDAP用户组


12

我一直在考虑mod_auth_kerb在内部Web服务器上进行部署以启用SSO。我可以看到的一个明显问题是,这是一种全有或全无的方法,您的所有域用户都可以访问一个站点或不能访问该站点。

是否可以mod_auth_kerb与诸如mod_authnz_ldap在LDAP中检查特定组中的组成员身份之类的组合使用?我猜该KrbAuthoritative选项与此有关吗?

另外,据我了解,该模块将用户名设置为username@REALM经过身份验证之后,但是当然,在目录中,用户仅作为用户名存储。此外,我们运行的某些内部站点(例如trac)已经具有链接到每个用户名的用户个人资料。是否有办法解决此问题,也许是通过某种方式在认证后剥离领域位?


只是有关实现的问题,您是将Windows ADS用于kerberos领域还是其他实现?
杰里米·布斯

带有MIT Kerberos v5的Apple OpenDirectory
Kamil Kisiel,2009年

好吧...以前没有使用过Apple的OpenDirectory。我能够使用它们的工作站凭据,使Apache对Windows ADS使用NTLM进行身份验证,然后将其限制为特定的组。
杰里米·布斯

在不从用户名中剥离领域的情况下,您可以在LDAP查询中使用替代属性来搜索用户实体,例如ActiveDirects女士中的“ userPrincipalName”属性。
伊夫·马丁

Answers:


13

现在,在mod_auth_kerb 5.4中,可以使用以下config指令从REMOTE_USER剥离领域:

KrbLocalUserMapping开启


哇,看起来好像是2008年发布的,但是在他们的网站上没有提及(版本或参数)。
卡米尔·基西尔

7

您可以使用一种机制进行身份验证,然后使用另一种机制进行授权,这就是2.2中authn / authz分离的全部要点。身份验证为您提供了REMOTE_USER的设置,然后您可以将其用于authz_ldap。另外,authn_ldap然后搜索用户(如果找到REMOTE_USER,则使用您必须指定的搜索条件将其转换为DN-例如,搜索CN)。然后,当找到DN时,您可以在LDAP对象上指定要求。例如,如果所有访问资源的用户都必须在同一个OU中,则可以指定

require ldap-dn ou =经理,o =公司


是否可以在将REMOTE_USER变量传递到授权阶段之前对其进行修改?例如,要剥离Kerberos用户名的REALM部分以在LDAP数据库中进行查找?
卡米尔·基西尔

不通过配置的方式。但是,在Apache模块的源代码中这样做相对容易。寻找给request-> user的分配并进行调整;然后使用apxs2 -c重建模块。OTOH,将Kerberos名称放在单独属性下的LDAP中并让ldap模块通过该属性搜索用户可能更容易。
Martin v。Löwis09年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.