【发布时间】:2016-05-16 16:11:26
【问题描述】:
我正在使用 Servlets/JSP 等编写一个 Web 项目。目前该程序使用基本身份验证来确保安全性。但我的工作希望从我们的活动目录中获取安全角色。
我修改了 apache 的 server.xml 如下:
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://adclds001.mycompgroup.local:389"
connectionName="************.local:389"
connectionPassword="********"
userPattern="CN={0},OU=Trainers, OU=Academy, OU=Staff, OU=Users, OU=UK, OU=Countries, DC=mycompgroup, DC=local"
roleBase="OU=Trainers, OU=Academy, OU=Staff, OU=Users, OU=UK, OU=Countries, DC=mycompgroup, DC=local"
roleName="cn"
roleSearch="member={0}"
/>
身份验证工作正常,但我不知道如何映射 ldap 组 到 Tomcat 角色。
我尝试将组名之类的内容添加到 部署描述符的条目,但无济于事。
我还听说扩展 JNDIRealm 类并覆盖 getRoles 方法可能会给我我想要的东西..但我找不到完整的 可能需要的详细信息。
那么将 ldap 组映射到 tomcat 角色的最佳方法是什么?
应用程序仍然没有扮演角色。
我的领域详情目前是:
<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
connectionURL="ldap://adclds001.mycomp.local:389"
connectionName="trainee1@mycomp.local:389"
connectionPassword="****"
userPattern="CN={0},OU=Trainers, OU=Academy, OU=Staff, OU=Users, OU=UK, OU=Countries, DC=mycompgroup, DC=local"
userRoleName="Domain Users"
roleBase="OU=Trainers, OU=Academy, OU=Staff, OU=Users, OU=UK, OU=Countries, DC=mycompgroup, DC=local"
roleName="cn"
roleSearch="member={0}"
/>
我的部署描述符中有一个安全约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>Wildcard means whole app requires authentication</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Domain Users</role-name>
<role-name>admin_user</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
web.xml 中的安全角色:
<security-role>
<role-name>basic_user</role-name>
</security-role>
<security-role>
<role-name>admin_user</role-name>
</security-role>
<security-role>
<role-name>Domain Users</role-name>
</security-role>
我也有:
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
还有
我的 IT 部门告诉我,每个人都属于以下组: CN=域用户,CN=Users,DC=mycompgroup,DC=local
谁能建议我为什么不能使用域用户角色?
【问题讨论】:
-
你能包含一个样本组吗?查看 Tomcat 文档,它似乎应该可以工作。您使用的是哪个版本的 Tomcat?