yurybx
@yurybx
системный администратор

Как WEB-страница может получить текущее имя пользователя Windows?

Начальство заинтересовалось идеей создания корпоративного портала, в котором будет публиковаться информация для сотрудников. Можно было бы использовать тот же Bitrix24.ua или бесплатный Redmine, но меня как системного администратора не устраивает то, что мне придётся создавать учётные записи пользователей портала, а сотрудникам - помнить дополнительные логины и пароли (большая часть сотрудников - женщины на "вы" с техникой) . В нашей компании все сотрудники работают в Windows, и их учётные записи заведены в Active Directory на контроллере домена; 1С тоже привязана к Active Directory. Получается, что у каждого сотрудника только один логин-пароль, и я хочу сохранить этот принцип.
Итак вопрос: существует ли способ идентификации пользователя на WEB-ресурсе по текущему логину Windows?
Альтернативный вариант: возможно ли реализовать в том же Redmine идентификацию пользователя по IP-адресу? (могу настроить резервирование IP-адресов на нашем DHCP-сервере)
  • Вопрос задан
  • 1474 просмотра
Решения вопроса 7
существует ли способ идентификации пользователя на WEB-ресурсе по текущему логину Windows?

Существует. Протокол называется Kerberos в сочетании с SPNEGO. Существует RFC по его использованию вместе с HTTP, http-схема аутентификации называется Negotiate. Читайте подробно тут: RFC4559. Если очень коротко, то веб-сервер должен прислать заголовок www-authenticate со значением negotiate если готов поддерживать такую схему аутентификации. Браузер, в свою очередь, отвечает токеном.

В большинстве браузеров можно настроить поддержку этой схемы аутентификации. Со стороны сервера тоже разумеется нужна поддержка. Возможно вы захотите прибегнуть к помощи упомянутых Иван Шумов identity-серверов. Например Keycloak точно поддерживает Kerberos. На нём же можно и LDAP подцепить в качестве базы данных пользователей. Обычно так поступают, т.к. протоколы federated identity вроде OpenID Connect обычно гораздо проще реализовать со стороны веб-приложения, нежели все тонкости аутентификации вроде вашего случая или, например, двухфакторной авторизации через Google Authenticator.

Надеюсь это отвечает на ваш ИЗНАЧАЛЬНЫЙ вопрос о ТЕКУЩЕМ логине в домене. Т.к. сам по себе LDAP подключенный к сервису это хорошо конечно, но это всё-таки не SSO.

Вот доки по настройке этого в Keycloak: https://github.com/keycloak/keycloak-documentation...
Ответ написан
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Для apache есть модуль mod_authnz_sspi
Который прокидывает логин доменного пользователя в заголовке запроса.
Ответ написан
wisgest
@wisgest
Слесарь холодной обработки металла
С моей ограниченной точки зрения разве что только в Internet Explorer. Возможно, разрешив выполнение небезопасных ActiveX. Или ещё в «Свойствах обозревателя» в настройках безопасности есть «Проверка подлинности пользователя/Вход» и там, в частности, можно выбрать «Автоматический вход в сеть с текущими именем пользователя и паролем» или «Автоматический вход в сеть только в зоне интрасети», но что это именно такое я не проверял.
Ответ написан
xmoonlight
@xmoonlight Куратор тега Веб-разработка
https://sitecoder.blogspot.com
1. Установка (читайте 1-й коментарий)
2. Документация
3. Использование:
Прозрачная аутентификация:
$_SERVER['AUTH_USER'] или $_SERVER['PHP_AUTH_USER']

или ручная:
$ldap = ldap_connect("ldap.example.com");
if ($bind = ldap_bind($ldap, $_POST['username'], $_POST['password'])) {
  // log them in!
} else {
  // error message
}

4. mod_authnz_sspi - настройка
5. ещё код по использованию - здесь
Ответ написан
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Для нормальной жизни уже давно придумали такую вещь как Identity Server, который может цеплять пользователей откуда угодно. Тут есть такие решения как Keycloak, WSO2, okta, Auth0, .... Много из. Выбирайте. И пароль модно будет менять потом из браузера, а ее только когда он протухнет в системе и надо будет ломиться в офис
Ответ написан
@S010D
Google: asp.net active directory authentication, А в общем, как написали выше это тема LDAP authentication.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Jeer
@Jeer
уверенный пользователь
если под какой-нибудь asp.net писать, то в IIS включаете галку "windows аутентификация", больше ничего не надо
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы