2015-03-26 2 views
3

В настоящее время я работаю над проектом, у которого есть требование аутентификации, которое вызывает у меня некоторые проблемы, и я хотел бы получить некоторые рекомендации по наилучшему способу его достижения..NET OWIN Authentication - Cookie + Windows (активная директория)

У меня есть проект C# MVC в Интернете, который в настоящее время имеет аутентификацию cookie OWIN для внешних пользователей. Теперь нам нужно разрешить внутренним пользователям получать доступ к приложению через Active Directory. В принципе, внутренний пользователь должен войти на свой компьютер под управлением Windows, перейти на веб-сайт, и они будут подписаны.

У меня нет опыта аутентификации AD, так что это немного черная дыра в момент.

Я предполагаю, используя OWIN, мне нужно создать новое промежуточное программное обеспечение для проверки подлинности, которое может выполняться до проверки подлинности cookie.

Однако я не уверен, с чего начать с установки этого промежуточного программного обеспечения AD, или существует ли существующее, которое я могу использовать.

Я пробовал искать, но, похоже, не нашел много информации об аутентификации AD через OWIN, есть много всего о Azure AD.

Я столкнулся с этим https://github.com/MohammadYounes/OWIN-MixedAuth, но работает локально, он использует базовую аутентификацию Windows, возможно, это может быть скорректировано для моих целей?

Может кто-нибудь предложить некоторые советы о том, как этого достичь?

Спасибо!

ответ

1

Я столкнулся с одной и той же проблемой не так давно, и пошел по пути использования аутентификации NTLM (что сводится к тому, что вы хотите, пользователи интрасети будут «подписаны» автоматически), сохраняя при этом полную учетную запись приложения (ASP: NET Идентичность 2,0), вы можете проверить мой Owin NTML аутентификации промежуточного уровня:

https://github.com/pysco68/Pysco68.Owin.Authentication.Ntlm

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

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

+0

Спасибо за ваш ответ. Является ли Ntlm хорошим способом, из того, что я прочитал, он был отброшен в пользу Kerberos? Я не очень люблю ни одного из них, поэтому я мог бы говорить о неправильном. Есть ли способ сделать аутентификацию автоматически, не отправляя пользователя через другой URL-адрес для входа на сайт? –

+0

Вы полностью правы, он был отброшен в пользу Kerberos, но Kerberos добавляет дополнительные требования к вашей инфраструктуре; вот большая информация об этом: http://serverfault.com/a/254835 Обратите внимание, что вы можете обойти большинство (связанных с безопасностью) ловушек NTLM, включив шифрование транспорта HTTPS/TLS (которое вы, вероятно, должны * делать в любом случае!) – pysco68

+0

@ pysco68 У меня возникли проблемы с получением промежуточного программного обеспечения для работы с веб-приложением MVC5. В нем я разместил ссылку на точку входа NTLM на странице входа.Нажав на него, он отправляет его в поток аутентификации NTLM, а в IE, который будет запускаться, и в обратном вызове OnCreateIdentity, я предоставляю ClaimsIdentity. Тем не менее, это никогда не кажется нигде установленным, и в результате я возвращаюсь на страницу входа вместо returnUrl. В FireFox поток NTLM выглядит бесконечно, всегда представляя диалоговое окно входа. –

1

Ссылка, с которой вы столкнулись, используется Integrated Windows authentication NOT basic authentication.

Я думаю, что ваша ситуация похожа на this one. То же самое можно достичь, используя OWIN-MixedAuth в соответствии с этим comment.

+0

Спасибо за ваш ответ. Извиняюсь за мое замешательство в отношении интеграции/базовой аутентификации, я - noob для проверки подлинности Windows, и когда я увидел всплывающее окно, я предполагаю, что основной. Ссылки, которые вы отправили, выглядят многообещающими, я попробую их попробовать. –