Java EE: аутентификация через tomcat + ldap - PullRequest
0 голосов
/ 16 марта 2012

Я хотел бы сделать аутентификацию с помощью tomcat, используя группы в моем ldap для управления доступом к моему веб-приложению (например, администраторы, простые пользователи, разработчики и т. Д.).В настоящее время я могу войти в свое веб-приложение, используя ldap, если я не использую какую-либо группу.

Вот мой соответствующий пример кода:

web.xml:

<security-constraint>
    <display-name>Test</display-name>
    <web-resource-collection>
        <web-resource-name>Administrative Area</web-resource-name>
        <url-pattern>/admin.html</url-pattern>
        <url-pattern>/blabla.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>TOTOAdmins</role-name>
    </auth-constraint>
</security-constraint>
<security-constraint>
    <display-name>Tomcat Server Configuration Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>/users/*</url-pattern>
        <url-pattern>/login</url-pattern>
        <url-pattern>/error</url-pattern>
        <url-pattern>/welcome</url-pattern>
        <url-pattern>/home.do</url-pattern>
        <url-pattern>/out.do</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Form-Based Authentication </realm-name>
    <form-login-config>
        <form-login-page>/login</form-login-page>
        <form-error-page>/error</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <role-name>TOTOAdmins</role-name>
</security-role>
<security-role>
    <role-name>*</role-name>
</security-role>
<welcome-file-list>
    <welcome-file>welcome</welcome-file>
</welcome-file-list>

В этом примере мы можем видеть, что я хотел бы предоставить доступ к какой-либо странице всем пользователям, но только пользователи, принадлежащие к TOTOAdmins, имеют доступ к blabla.jsp & admin.html.

В настоящее время все люди (независимо от их групп) имеют доступ к странице, указанной в, но никто не может получить доступ к blabla.jsp & admin.html.

server.xml:

  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context path="/portal_re" debug="0" reloadable="true" docBase="portal_re">
      <Realm className="org.apache.catalina.realm.JNDIRealm"
               debug="99"
               connectionURL="ldap://XX.X.XX.XXX:XXX"
               connectionName="cn=XXXXXX,ou=abc,dc=abcdef,dc=xyz"
               connectionPassword="XXXXXXX"
               userBase="ou=abc,dc=abcdef,dc=xyz"
               userSearch="(name={0})"
               userSubtree="true"
               userRoleName="memberOf"
               roleBase="ou=abc,dc=abcdef,dc=xyz"
               roleSearch="(uniqueMember={0})"
               roleSubtree="true"
               roleName="cn"
/>
</Context>

Когда я просматриваю свой ldap, у каждого пользователя есть группа в члене "memberOf", и я определяю rolebase / search / subtree / name с точки зрения того, как определяются группы в ldap.Я захожу в свое веб-приложение, которое имеет следующий атрибут в ldap:

memberOf            CN=TOTOAdmins,OU=ABC,DC=ABCDEF,DC=xyz

(он даже является членом четырех разных групп, но я не знаю, уместно ли это)

Я не знаю, еслиэто поможет, но на домашней странице у меня есть

<h1><% =request.getUserPrincipal()%></h1>

, и когда я регистрируюсь с пользователями: toto, он печатает:

GenericPrincipal [toto (CN = Администраторы, OU= ABC, DC = ABCDEF, DC = хуг, CN = TOTOAdmins * +1027 *, OU = ABC, DC = ABCDEF, DC = хуг, CN = Читатели, CN = ABC, DC = ABCDEF, DC = хуг, CN,= Пользователи, CN = Роли, DC = ABCDEF, DC = xyz,)

Ну, ты как бы мой последний шанс.

1 Ответ

0 голосов
/ 28 ноября 2012

Попробуйте изменить атрибут roleSearch на

"(member={0})"

или

"(memberOf={0})"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...