Как преобразовать учетные данные NTLM в токен Kerberos в Node.js - PullRequest
17 голосов
/ 08 июля 2019

Я хочу построить сервер, используя Node.js, который действует как своего рода прокси.Клиенты, которые подключаются к моему серверу, используют NTLMv2 для аутентификации (нет никаких шансов изменить это), но вышестоящий сервер, к которому должен подключиться мой сервер, требует токен Kerberos.

Итак, мой вопрос довольно прост: какс помощью Node.js преобразовать информацию, предоставляемую NTLMv2, в маркер Kerberos?На npm до сих пор я нашел модули для аутентификации NTLMv2, но мне как-то, вероятно, нужно было бы поговорить с Windows, чтобы перевести NTLMv2-данные пользователя в токен для этого пользователя.

Любые подсказки на этот счет, какподойти к этой проблеме?

Ответы [ 2 ]

2 голосов
/ 18 июля 2019

Если ваш KDC разрешает ограниченное делегирование, вы можете настроить свой промежуточный сервер для разрешения олицетворения.Таким образом, он может установить контекст безопасности с клиентом в одном механизме (в вашем случае NTLM) и общаться с внутренним сервером от имени клиента в другом механизме (Kerberos).Google для «ограниченного делегирования» и «перехода протокола» для получения дополнительной информации.Надеюсь, это поможет.

2 голосов
/ 08 июля 2019

Абсолютно нет!NTLM и Kerberos работают совершенно по-разному.Прежде всего, я очень рекомендую избавиться от NTLM как можно быстрее.

Вы можете легко решить свою проблему, если получите доступ к интерфейсам C.Я также предполагаю, что вы MIT Kerberos в Unix-подобных ОС, таких как CentOS или FreeBSD и т. Д.

NTLM предоставит вам имя для входа в систему нижнего уровня.Сначала необходимо преобразовать домен NetBIOS в домен DNS через LDAP (используйте libopenldap), затем вы можете создать принципал Kerberos или корпоративный принцип для своего клиента.Затем создайте учетную запись службы в вашем KDC и включите передачу протокола и ограниченное делегирование этой учетной записи для целевой службы.Теперь запросите TGT от имени этого пользователя и запросите билет на обслуживание для пользователя, вуаля, вы можете получить доступ к своему бэкэнду Kerberos.Вот достойное прочтение: https://k5wiki.kerberos.org/wiki/Projects/Services4User

Если вы запускаете HTTPd в качестве обратного прокси-сервера, он может обработать всю магию для вас с помощью mod_auth_gssapi.

В Windows это немногоболи с API безопасности и SSPI.В то время как основное преобразование приходит бесплатно с Windows.Вам нужно будет LsaLogonUser с KERB_S4U_LOGON, выдать себя за этот дескриптор, а затем потребовать, чтобы SSPI получил дескриптор кредита ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...