在Tomcat中将ldap角色映射到自定义角色

时间:2019-08-22 06:01:17

标签: tomcat ldap

ldap服务器中特定角色的

sAMAccountName属性是“ OrgAdmin”。但是Java应用程序会检查用户是否具有“管理员”角色。

由于我无权访问此代码,因此我想知道如何将“ OrgAdmin”角色映射到“ Administrator”角色,以便应用程序将“ OrgAdmin”视为“ Administrator”并允许管理员访问。

我想通过tomcat实现这一目标。下面是server.xml文件中的jndi领域。

        <Realm className="com.speedlegal.catalina.realm.JNDIRealm" debug="9"
                connectionName="CN=app-name,OU=America,OU=Service,OU=User,DC=xxx,DC=yyy,DC=net" 
                connectionPassword="***" 
                connectionURL="ldaps://domain:3269"
                alternateURL="ldaps://domain:3269"  
                userBase="DC=xxx,DC=yyy,DC=net" 
                userSubtree="true" 
                userSearch="(sAMAccountName={0})" 
                roleBase="OU=America,OU=Universal,OU=Group,DC=xxx,DC=yyy,DC=net"
                roleSubtree="true"
                roleName="sAMAccountName"
                roleSearch="(member={0})"/>

下面是我的tomcat的conf / web.xml。

    <web-app>

       <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>


      <servlet>
            <servlet-name>jsp</servlet-name>
            <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
            <init-param>
                <param-name>fork</param-name>
                <param-value>false</param-value>
            </init-param>
            <init-param>
                <param-name>xpoweredBy</param-name>
                <param-value>false</param-value>
            </init-param>
            <init-param>
                <param-name>mappedfile</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>3</load-on-startup>
        </servlet>


       <!-- The mapping for the default servlet -->
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

        <!-- The mappings for the JSP servlet -->
        <servlet-mapping>
            <servlet-name>jsp</servlet-name>
            <url-pattern>*.jsp</url-pattern>
            <url-pattern>*.jspx</url-pattern>
        </servlet-mapping>

        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>

        <mime-mapping>
            <extension>z7</extension>
            <mime-type>application/x-zmachine</mime-type>
        </mime-mapping>
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

    </web-app>

2 个答案:

答案 0 :(得分:0)

您需要在web.xml或上下文中添加一些内容,例如:

 <security-constraint>
       <web-resource-collection>
           <web-resource-name>Administrative Area</web-resource-name>
           <url-pattern>/Delete.jsp</url-pattern>
       </web-resource-collection>
       <auth-constraint>
           <role-name>Admin</role-name>
       </auth-constraint>
       <user-data-constraint>
           <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
   </security-constraint>

https://ldapwiki.com/wiki/Tomcat%20And%20LDAP

所示

请记住,其中涉及许多不同的参数和版本。

-吉姆

答案 1 :(得分:0)

Tomcat中的一种方法是创建JNDIRealm的子类。请参见答案here或参考的源页面here