【问题标题】:Mapping role-names to from roles将角色名称映射到角色
【发布时间】:2018-08-09 19:30:15
【问题描述】:

我为 tomcat 7 配置了一个 LDAP 领域。它在用户组中搜索某人,一旦找到,将对他们进行身份验证并允许他们访问应用程序。

这是我的境界:

<Realm className="org.apache.catalina.realm.JNDIRealm"
          connectionURL="ldap://adldap.mycompany.com:3268"
          userSearch="(sAMAccountName={0})"
          userSubtree="true"
          userBase="DC=mycompany,DC=com"
          roleSubtree="true"
          roleName="CN"
          userRoleName="memberOf"/>

它找到用户然后搜索相应的角色名称。这是我在 web.xml 中对角色的安全约束。

<security-constraint>
    <display-name>user</display-name>
    <web-resource-collection>
        <web-resource-name>user</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>PUT</http-method>
        <http-method>HEAD</http-method>
        <http-method>TRACE</http-method>
        <http-method>POST</http-method>
        <http-method>DELETE</http-method>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description>users</description>
        <role-name>user</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>user</role-name>
</security-role>

但用户将拥有类似于CN=Domain Users,CN=Users,DC=mycompany,DC=com 的角色。所以我的问题是,有没有办法可以将该角色映射到用户的角色名称?否则我需要这样定义我的安全约束:

<security-constraint>
    <display-name>user</display-name>
    <web-resource-collection>
        <web-resource-name>user</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>PUT</http-method>
        <http-method>HEAD</http-method>
        <http-method>TRACE</http-method>
        <http-method>POST</http-method>
        <http-method>DELETE</http-method>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description>users</description>
        <role-name>CN=Domain Users,CN=Users,DC=mycompany,DC=com</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>CN=Domain Users,CN=Users,DC=mycompany,DC=com</role-name>
</security-role>

【问题讨论】:

    标签: ldap tomcat7 jndi web.xml security-constraint


    【解决方案1】:

    将该角色映射到用户的角色名称?

    <Realm className="org.apache.catalina.realm.JNDIRealm"
       connectionURL="ldap://adldap.mycompany.com:3268"
       userSearch="(sAMAccountName={0})"
       userSubtree="true"
       userBase="DC=mycompany,DC=com"
       roleSubtree="true"
       roleName="CN"
       userRoleName="sAMAccountName"/>
    

    这应该(我无法测试)从经过身份验证的用户条目中提取属性 (sAMAccountName)。

    【讨论】:

    • 感谢您的帮助,但我的意思是将角色名称 "CN=Domain Users,CN=Users,DC=mycompany,DC=com" 映射为等于 "user" 而不必键入上面的整个角色名。希望这有助于澄清。就像我说的那样,我只是想知道这是否可能。
    • AFIK,没有。但是自从。
    【解决方案2】:

    您是否尝试过使用

    <security-role-ref>
    <role-name>CN=Domain Users,CN=Users,DC=mycompany,DC=com</role-name>
    <role-link>user</role-link>
    </security-role-ref>
    

    【讨论】:

    • 这就是我最终所做的,但我正在寻找一种比列出整个角色名称更简单的方法。
    猜你喜欢
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2021-07-25
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多