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