LINUX.ORG.RU
ФорумAdmin

Лучший способ авторизации LDAP в NGINX

 , ,


0

3

Хочу ограничить доступ к внутреннему ресурсу, но чтоб не писать свою систему авторизации и переиспользовать пароль/логин от виндового домена хочу использовать доменные учетные записи

Какой самый лучший способ это сделать? Также важно что бы передавался текущий юзер что бы логировать.

Через промежуточный сервер apache?

Ответ на: комментарий от glorsh66

Когда я работал в компании, эксплуатирующей windows домен, я на своей линукс станции входил в домен с помощью kinit. После этого firefox и chrome заходили на сайты корпоративного интранета прозрачно. Правда у chrome для этого приходилось в /etc/opt/chrome/policies/managed/policy.json добавить

{
    "AuthServerWhitelist": "corp.com,*.corp.com",
    "AuthNegotiateDelegateWhitelist": "corp.com,*.corp.com"
}
iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

Но ее сложнее настраивать чем обычный ldap. И вопрос ещё как будет работать керберос на мобильных девайсах.

einhander ★★★★★ ()
Ответ на: комментарий от einhander

«Обычный» ldap не даёт прозрачного входа. Логин пороль приходится вводить каждый раз для каждого сайта.

Для андроида в магазине есть hypergate authenticator, для iOS поддержка kerberos single sign-on встроенная.

iliyap ★★★★★ ()
Ответ на: комментарий от glorsh66

После настройки и хром и мозила и егде будут работать.

Psilocybe ★★★ ()
Ответ на: комментарий от iliyap

Обычный» ldap не даёт прозрачного входа

Да, но если повесить все на один сайт, то вводить нужно будет один раз. Sso без дополнительных телодвижений работает только в винде, в других случаях нужно что-то допиливать на стороне клиента.

einhander ★★★★★ ()
Ответ на: комментарий от iliyap

Как поставить на ubuntu 22? nginx SPNEGO Только из исходников? Что то никак не могу найти пакета SPNEGO

glorsh66 ()
Последнее исправление: glorsh66 (всего исправлений: 1)
Ответ на: комментарий от Psilocybe

Вопрос в том что apache не передате имя пользователя в режиме прокси. Как заставить его передавать ?

<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]



        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

ProxyPreserveHost On
ProxyRequests On
ProxyVia On

<Proxy *>
AuthType Kerberos
KrbAuthRealms DOMAIN.RU
KrbServiceName HTTP
Krb5Keytab /etc/apache2/sqserver.keytab
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
SetEnv proxy-chain-auth 

</Proxy>

ProxyPass / http://192.168.56.124:80/
ProxyPassReverse / http://192.168.56.124:80/
glorsh66 ()

А можно ли это сделать через IIS? Хорошая ли это идея? Например реверс прокси черезе IIS.

glorsh66 ()
Ответ на: комментарий от glorsh66

Вопрос в том что apache не передате имя пользователя

Он точно умеет это делать, так что ищите дальше. У меня получилось, но я уже не помню, что и где.

einhander ★★★★★ ()
18 января 2023 г.
Ответ на: комментарий от glorsh66

Да небось часть заголовков портится при пробросе.

Нужны директивы наподобие таких:

ProxyPassReverse <backend_url>
ProxyPreserveHost On

См. статью ниже или аналогичные

https://medium.com/@uri.tau/apache-and-ldap-cc7bff1f629d

https://gist.github.com/alivesay/b81cd86457a1590e0cfd49725494056c

NDfan ()
Последнее исправление: NDfan (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.