Я хотел бы сделать аутентификацию 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,)
Ну, вы - мой последний шанс.
Есть ли вопрос здесь? – EJP