2012-03-16 4 views
0

Я хотел бы сделать аутентификацию tomcat, используя группы в моем ldap, чтобы обрабатывать доступ к моему webapp (например: администраторы, простые пользователи, разработчики и т. Д.). Я могу в данный момент войти в свой webapp с помощью ldap, если я не использую какую-либо группу.Java EE: аутентификация через tomcat + 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, каждые пользователи имеют Groupe в элементе «memberOf», и я определен rolebase/поиск/поддерево/имя в терминах того, как определены группы в ldap. я войти в свой веб-приложение, который имеет следующий атрибут в LDAP:

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

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

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

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

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

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

Ну, вы - мой последний шанс.

+0

Есть ли вопрос здесь? – EJP

ответ

0

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

"(member={0})" 

или

"(memberOf={0})" 
Смежные вопросы