gpt4 book ai didi

java - 如何将 Ldap 组映射到 Tomcat 角色 (Java)

转载 作者:行者123 更新时间:2023-11-28 22:27:44 26 4
gpt4 key购买 nike

我正在使用 Servlets/JSP 等编写一个 web 项目。目前该程序使用基本身份验证来确保安全。但我的工作需要从我们的 Activity 目录中获取安全角色。

我修改了 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=Domain Users,CN=Users,DC=mycompgroup,DC=local

谁能告诉我为什么我不能使用 Domain Users 角色?

最佳答案

您可以使用 LDAPAdminExe 浏览 ldap 结构。并找到您所在的“组”。

例如,您的组是 CN=Domain Users,CN=Users,DC=mycompgroup,DC=local

第一步。您应该检查角色库中是否存在该组(使用 LDAPAdminExe 进行检查):

OU=Trainers, OU=Academy, OU=Staff, OU=Users, OU=UK, OU=Countries, DC=mycompgroup, DC=local

如果不是,您应该更改此 roleBase 设置。我认为可以将此配置设置为

DC=mycompgroup,DC=local

因此您将在 server.xml 中设置配置:

<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="DC=mycompgroup,DC=local"
roleName="cn"
roleSearch="member={0}"
/>

第 2 步。您应该在 web.xml 中添加组名:

<security-constraint>
....
<auth-constraint>
<role-name>Domain Users</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
</login-config>

<security-role>
<role-name>Domain Users</role-name>
</security-role>

步骤 3. 重启这个 tomcat 服务器

尽情享受吧!

关于java - 如何将 Ldap 组映射到 Tomcat 角色 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com