powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JNDI + Active Directory
39 сообщений из 39, показаны все 2 страниц
JNDI + Active Directory
    #39685967
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто успешно реализовал авторизацию через AD в веб проекте на яве?

прописал соединение к LDAP в server.xml томката, прописал группы в web.xml проекта. Проект запустился, но никакой авторизации почему-то не появилось. Дальше то как эту авторизацию вызывать и куда складывать полученные токены?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686023
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,
- в web.xml security-constraint какие то прописали? Иначе, если используете Spring, то подключать Spring Security.
JNDI в названии темы не при делах.
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686066
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar,
- в web.xml security-constraint какие то прописали? Иначе, если используете Spring, то подключать Spring Security.
JNDI в названии темы не при делах.
jndi - имел в виду, что для подключения в ldap используются настройки, прописанные на сервере в server.xml, а не строится дерево объектов прям в коде

Спринг не использую

в web.xml прописано
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<security-constraint>
   <display-name>Левое имя</display-name>
   <web-resource-collection>
     <web-resource-name>еще одно левое имя</web-resource-name>
     <url-pattern>*.jsp</url-pattern>
     <url-pattern>*.html</url-pattern>
     <url-pattern>*.xml</url-pattern>
     <http-method>GET</http-method>
     <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint>
     <role-name>тут роль АДа</role-name>
   </auth-constraint>
 </security-constraint>
 <login-config>
   <auth-method>CLIENT-CERT</auth-method>

 </login-config>
</security-constraint> 


что с этими настройками, что без ничего нового не происходит. всё запускается. ошибок нет, но и запускает на любую страничку
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686106
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,

выкинуть это:
Код: xml
1.
2.
3.
<login-config>
   <auth-method>CLIENT-CERT</auth-method>
 </login-config>



вставить это:
Код: xml
1.
2.
3.
<auth-constraint>
   <role-name>MyLdapRole</role-name>
</auth-constraint>
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686108
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,

пр
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686112
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,

пригляделся, web.xml какой то левый - два раза </security-constraint> - так вообще запускаться не должно
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686180
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov, копипаст. в проекте дубля нет. но всё равно домен отключили. до понедельника не проверю. спасибо за советы
Код: xml
1.
2.
3.
<auth-constraint>
   <role-name>MyLdapRole</role-name>
</auth-constraint>


уже под конец добавил, но логин конфиг не убирал. попробую ещё на днях
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686654
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov, выкинул, вставил. не помогло
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686663
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в примерах на оракле пишут про такую конструкцию
Код: xml
1.
2.
3.
    <security-role>
        <role-name>manager</role-name>
    </security-role>


она расположена вне <security-constraint>, но когда выношу её за пределы <security-constraint> сразу же получаю ошибку "the markup in the document following the root element must be well-format"
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686680
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с велл формат проблема решена. не было тэга web-app.

теперь он есть и проект вообще не запускается с ошибкой "Failed to retrieve JNDI naming context for container so no cleanup was performes for that container javax.naming.NamingException:No naming context bound to this class loader"
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686685
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тээкс, идём дальше. ошибка была из-за конструкции
Код: xml
1.
<url-pattern>/*.jsp</url-pattern>


оказывается слэш не нужен

теперь другая проблема. окно для ввода логина и пароля не появляется, сразу пишет ошибку 403 типа доступ запрещён
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686687
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавил
Код: xml
1.
2.
3.
<login-config>
<auth-method>BASIC</auth-method>
</login-config>


теперь окно для ввода логина/пароля запрашивает, но не пропускает. всё равно ошибка 403 закрыт доступ
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686700
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcarтеперь другая проблема. окно для ввода логина и пароля не появляется, сразу пишет ошибку 403 типа доступ запрещён
- и это правильное поведение, если при аутентификации в ОС пользователь не аутентифицирован в AD (и если Tomcat действительно соединился с AD и произвел проверку пользователя).
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686743
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcarтеперь другая проблема. окно для ввода логина и пароля не появляется, сразу пишет ошибку 403 типа доступ запрещён
- и это правильное поведение, если при аутентификации в ОС пользователь не аутентифицирован в AD (и если Tomcat действительно соединился с AD и произвел проверку пользователя).
да. там не был указан тип авторизации. теперь указан, но не пропускает
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686766
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,
Компьютер, свойства - поле Домен заполнено?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39686787
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Korcar,
Компьютер, свойства - поле Домен заполнено?
ага) Отправляю логин пароль для авторизации через request.login(). Ошибок нет, получаю списки всех групп пользователя через request.getUserPrincipal(). Группы там те, что надо, но пытаюсь проверить вхождение пользователя в одну из этих групп request.idUserRole() - выдает false.
фиг знает почему
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687194
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может имя доменной группы надо указывать со слэшем в web.xml?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687216
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слэши ожидаемо не помогли

при авторизации через Active Directory обязательно роли прописывать в tomcat-users.xml?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687227
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,
Пример хоть один в сети искал?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687231
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Korcar,
Пример хоть один в сети искал?
нашел целую кучу, правда про доменную авторизацию маловато. поэтому и спрашиваю)
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687233
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorcarPetro123Korcar,
Пример хоть один в сети искал?
нашел целую кучу, правда про доменную авторизацию маловато. поэтому и спрашиваю)маловато, т.е. все нерабочие?
Поэтому и спрашиваю)
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687235
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с шаблонами, разграничивающие доступ проблем нет (url-pattern). имя залогиненного пользователя тоже читается из риквеста. вопрос в том, почему проект не видит доменных групп?

точнее он их видит и через
Код: java
1.
request.getUserPrincipal()

выводит все группы, в которые залогиненный пользователь включен (выводит со всеми OU/CN/DC), но вот
Код: java
1.
request.IsUserInRole("любая роль")


всегда выводит false

ну и через шаблоны, прописанные в web.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<security-constraint>
<display-name>Example Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ролька</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</security-constraint>

<security-role>
<role-name>ролька</role-name>
</security-role>


тоже роли не работают. фиг знает почему
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687254
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Korcarпропущено...

нашел целую кучу, правда про доменную авторизацию маловато. поэтому и спрашиваю)маловато, т.е. все нерабочие?
Поэтому и спрашиваю)
примеров web.xml - кучу. примеров server.xml - только на сайте апача. вроде все сделано, как там и указано, и работает, но не совсем так как надо
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687320
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcarпри авторизации через Active Directory обязательно роли прописывать в tomcat-users.xml?
- конечно нет, это альтернативный Realm - UserDatabaseRealm или MemoryRealm. Эти роли в Вашем случае не должны использоваться. Может в этом и проблема - одновременно используется несколько разных Realm (в разных областях видимости Engine/Host/Context)?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687353
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcarпри авторизации через Active Directory обязательно роли прописывать в tomcat-users.xml?
- конечно нет, это альтернативный Realm - UserDatabaseRealm или MemoryRealm. Эти роли в Вашем случае не должны использоваться. Может в этом и проблема - одновременно используется несколько разных Realm (в разных областях видимости Engine/Host/Context)?
добавлял локальные роли только после невозможности достучаться до доменных групп. уже убрал. в server.xml только подключение к домену. подключение проходит успешно, судя по тому, что список всех групп пользователя можно просмотреть через request.getUserPrincipal() после его логона
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687374
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar, покажите настройки Realm
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687408
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar, покажите настройки Realm
server.xml:
Код: xml
1.
2.
3.
4.
5.
6.
<Realm className="org.apache.catalina.realm.LockOutRealm" cacheRemovalWarningTime="4000" cacheSize="1100" lockOutTime="6800" failureCount="10">

<Realm className="org.apache.catalina.realm.JNDIRealm" userSubtree="true" userSearch="(sAMAccountName={0})" userRoleName="memberOf" 
userBase="OU=кусок,DC=кусок" referrals="follow" connectionURL="лдап://хостлдапа:порт" connectionName="служебный пользователь" connectionPassword="его пароль" />

</Realm>


как-то так
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687459
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687478
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar, для AD советуют еще параметр roleBase: Настройка веб-контейнера Apache Tomcat вручную для применения LDAP
значение RoleBase равно значению userBase?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687486
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcarзначение RoleBase равно значению userBase?
- не обязательно, вот еще пример: Web Container Authentication via LDAP
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687491
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar, еще обратите внимание на параметр roleName
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687503
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcarзначение RoleBase равно значению userBase?
- не обязательно, вот еще пример: Web Container Authentication via LDAP
в смысле, roleBase - описывает подкаталог userBase, где лежат роли? или roleBase - так же описывает корневой каталог для ролей?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687507
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar, еще обратите внимание на параметр roleName
регистр roleName важен?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687509
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar, вторую ссылку посмотрите, там скриншот со структурой LDAP и описания параметров для Realm
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39687512
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcarрегистр roleName важен?
- не знаю, теоретически не важен, а практически ... надеюсь расскажите)
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39688461
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcarрегистр roleName важен?
- не знаю, теоретически не важен, а практически ... надеюсь расскажите)
регистр походу не важен.

Проблема решилась довольно просто. Во всех примерах в в role-name пишут имя группы. В моём случае этого не достаточно. Если не прописать полный путь от корня AD (который описан в server.xml в атрибуте userBase), то авторизация не работает. То есть если группа в Active Directory лежит в каталог1/каталог2/каталог3/группа, то в role-name надо написать CN=группа,OU=каталог3,OU=каталог2,OU=каталог3,DC=корень_из_server.xml

так то
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39688628
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar,
как то кривовато, теоретически roleBase="OU=каталог3,OU=каталог2,OU=каталог3,DC=корень" должно было помочь и roleSearch как в примере. Во всяком случае для LDAP.
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39688714
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar,
как то кривовато, теоретически roleBase="OU=каталог3,OU=каталог2,OU=каталог3,DC=корень" должно было помочь и roleSearch как в примере. Во всяком случае для LDAP.
то есть в roleBase указать полную ветку до группы? а если группы в разных ветках?
...
Рейтинг: 0 / 0
JNDI + Active Directory
    #39688825
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovKorcar,
как то кривовато, теоретически roleBase="OU=каталог3,OU=каталог2,OU=каталог3,DC=корень" должно было помочь и roleSearch как в примере. Во всяком случае для LDAP.
в общем ситуёвина такая: чтобы в web.xml прописывать только имя группы в server.xml должны быть прописаны параметры roleBase (полностью до группы, если параметр roleSubtree отсутствует или false), roleName (регистр не важен), roleSearch, roleSubtree (уже написал про него, так что по желанию)

Если всех этих параметров в server.xml нет, то в web.xml прописывается полный путь до группы, а не только имя

но server.xml - это поле деятельности админов, так что либо они меняют, либо подстраиваешься под имеющиеся настройки


может кому-то эта инфа поможет
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / JNDI + Active Directory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]