Логин аутентификации NT - PullRequest
       19

Логин аутентификации NT

1 голос
/ 04 сентября 2008

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

Они хотят иметь button на сайте, над которым я работаю, в частной области, которая отправит их на сайт nt с проверкой подлинности , но не требует от них входа на этот сайт вместо этого сайт передает имя пользователя и пароль , которые они использовали для входа на мой сайт, на другой сайт для них.

Возможно ли это сделать? и как мне это сделать? Есть ли лучший способ сделать это?

Ответы [ 5 ]

1 голос
/ 05 сентября 2008

Вот (непроверенная) теория, детали которой во многом будут зависеть от того, какие типы аутентификации будет принимать сайт Sharepoint. Я займусь Basic , так как это самый простой.

Вы напишете некоторый JavaScript, который использует XMLHttpRequest для отправки запроса на сайт Sharepoint, и добавите их имя пользователя и пароль в заголовки запроса. Их браузер запустит этот JavaScript и войдет на сайт Sharepoint.

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

Возможные проблемы:

  • XMLHttpRequest не разрешает междоменную аутентификацию
  • Браузер и XHR не передают информацию об аутентификации
  • Sharepoint и XHR не могут договориться о методе аутентификации

Другим вариантом является прокси-соединение к Sharepoint, которое позволяет вам входить на серверную часть (минуя ограничения XHR и безопасность браузера), но требует загрузки вашего сервера и, возможно, некоторых проблем с целевым URL.

0 голосов
/ 05 сентября 2008

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

Поскольку вы упоминаете, что это SharePoint ( spit ), имейте в виду, что в SharePoint есть несколько веб-сервисов, которые вы можете использовать для этого (вместо того, чтобы делать скриншот).

0 голосов
/ 05 сентября 2008

Если вам нужно пройти аутентификацию на втором сайте, вам может потребоваться создать новый поток и вызвать Windows LogonUser API. Получив токен безопасности, назначьте его новому потоку и выполните подключение через этот поток.

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

Надеюсь, это поможет.

0 голосов
/ 05 сентября 2008

Это интранет-среда? Если это так, им не нужно входить в систему в любом случае. Если sharepoint настроен с использованием «Интегрированной аутентификации» и сайт указан в IE как надежный сайт, браузер будет использовать сетевой кредит для автоматического входа в систему. Это также можно настроить на firefox .

0 голосов
/ 04 сентября 2008

Как другой сайт проверит ваше имя пользователя и пароль?

В идеале ваш сайт не должен даже запоминать пароль пользователя, чтобы иметь возможность передать его на другой сайт (вы храните хеши пароля, а не сам пароль, и используете только действительный пароль во время проверки).

Что если ваш сайт предоставил токен пользователю, который представляет этот токен новому сайту, который, в свою очередь, просит ваш сайт подтвердить токен. По сути, второй сайт доверяет вам, чтобы сказать им, кто пользователь.

Все это ломается, если второй сайт фактически использует учетные записи Windows для чего-либо, кроме простого получения имени пользователя (например, разрешений для базового файла), поскольку пользователь не вошел в систему как фактическая учетная запись пользователя Windows этот сценарий.

...