Как проверить токен kerberos (в node.js)?

Я не совсем уверен, что дал правильное описание.

По сути, я пытаюсь добавить Windows Authentication на сайт node.js.

Я отправляю обратно 401 с заголовком WWW-Authenticate: Negotiate.

Браузер немедленно возвращает заголовок authorization со значением Negotiate <some string of characters>.

На данный момент я просто хочу убедиться, что токен действителен. Я пытался найти примеры других фреймворков с открытым исходным кодом, которые делают то же самое, но я действительно не знал, что ищу.

Просто для ясности: пользователь уже вошел в домен и не отправляет информацию об имени пользователя и пароле.

(Возможно, я не до конца понимаю, как все это работает).

Я только что нашел это.

Сервер декодирует NegTokenInit, извлекает поддерживаемые MechTypes (тот, что находится впереди MechTypeList, должен быть либо Kerberos Legacy, либо Kerberos V5), проверяет, является ли он одним из ожидаемых, а затем извлекает MechToken и аутентифицируется с помощью gss_accept_security_context.

Если я правильно понял, я ищу gss_accept_security_context.

Я также безуспешно пытался использовать GSSManager в java. Я разместил эту проблему здесь.

Я иду в правильном направлении?


person Josh C.    schedule 13.08.2014    source источник


Ответы (2)


Недавно я отправил запрос на включение упомянутого выше модуля kerberos (https://www.npmjs.org/package/kerberos) для реализации аутентификации на стороне сервера. Ранее в этом модуле были реализованы только клиентские API.

Я также создал стратегию аутентификации паспорта, паспорт-переговоры (https://www.npmjs.com/package/passport-negotiate), который использует это и реализует HTTP-аутентификацию на стороне сервера, включая 401 и WWW-Authenticate.

Подробности можно посмотреть здесь:

https://github.com/dmansfield/passport-negotiate/blob/master/lib/passport-negotiate/strategy.js

К сожалению, это не сработает, если только запрос на включение не будет объединен с модулем kerberos и не появится новая версия, или если вы не сможете получить исправленную версию kerberos с моего github:

https://github.com/dmansfield/kerberos

person dmansfield    schedule 12.08.2015

Вы можете посмотреть исходный код модуля node-expose-sspi. Потому что он делает именно то, что вы хотите сделать: он проверяет токен Kerberos/NTLM с помощью функции SSPI, называемой AcceptSecurityContext.

https://github.com/jlguenego/node-expose-sspi

Примечание: я являюсь автором этого модуля.

person jlguenego    schedule 05.03.2020
comment
Требования: ОС Microsoft Windows, [...] - person n1ghtm4n4g3r; 30.01.2021