2016-08-09 2 views
3

Я пытаюсь найти решение для проверки подлинности в своем новом приложении, и мне нравится подход IdentityServer3. Я хотел бы надеяться, что мои требования будут удовлетворены IdentityServer3, и это просто мое отсутствие понимания из-за моей новизны с технологией.IdentityServer3 + Active Directory + Self-Hosted User db

Мои требования заключаются в следующем и в порядке их выполнения: 1) Если пользователь, запрашивающий аутентификацию, является локальным (доменным) пользователем, он должен автоматически аутентифицироваться с использованием Active Directory. 2) Если пользователь, запрашивающий аутентификацию, не найден в Active Directory, он должен быть аутентифицирован против нашей собственной таблицы пользователей. 3) Если пользователь, запрашивающий аутентификацию, не имеет ни полномочий, мы можем предоставить доступ через учетные данные Google или Facebook, но это не требование фазы I.

В настоящее время у меня есть действующее доказательство концепции с использованием IdentityServer3 в качестве автономного сервера безопасности, который извлекает записи из InMemoryUsers, InMemoryClients и InMemoryScopes, и я уверен, что смогу расширить эти концепции для вытаскивания из наших собственных база данных.

Эта проблема возникает, когда я пытаюсь использовать Active Directory в качестве первой контрольной точки.

Я рассмотрел несколько ресурсов в попытке выполнить Active Directory, но я все сработал, так как я не вижу ни одной сжатой демонстрации, которая показывает часть головоломки AD.

TJ Robinson имеет Gist ActiveDirectoryUserService, который реализует IUserService, и это выглядит наиболее перспективным, но из-за моего состояния n00b я не могу понять, как его перевернуть в схему.

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

Спасибо заранее, Ric

+0

@sbennur выглядит так, как будто у него тоже была проблема ... по крайней мере, когда дело доходит до части AD. К сожалению, он не показал полноэкранный пример того, как он был перенесен в файл 'Startup.cs' его Проект IdentityServer3. – rcastagna

ответ

3

Что касается первого требования ...

Я считаю, что вы должны изучить Windows Authentication Service. Это, по сути, мини-маркер безопасности-токена, который может работать в качестве поставщика внешней идентификации IdentityServer для обеспечения аутентификации Windows (по протоколу WS-Fed).

Если вы перейдете по этой ссылке на страницу GitHub, вы найдете две ссылки на образцы, которые вы можете начать с этого компонента. Один образец имеет как Identity Server, так и службу проверки подлинности Windows, размещенную отдельно, а другой образец - вместе.

Эти образцы включают пользовательскую службу (ExternalRegistrationUserService), которая показывает, что эти пользователи Windows сопоставляются с коллекцией пользователей в памяти (в Identity Server). Очевидно, что ваши требования потребуют другой реализации этого пользовательского сервиса, но я надеюсь, что это поможет вам начать работу с частью Windows Auth.

Когда я прошел это упражнение недавно, я нашел много полезной информации в closed IdentityServer3 issues (for windows auth). Много хорошей информации о переполнении стека; удачи!

+0

спасибо за толчок. Я работал с Службой проверки подлинности Windows, которую TJ Robinson собрал в качестве ссылки в моем OP. К сожалению, у меня нет доступа к ADFS, и я заметил в первой ссылке, которую вы предоставили, которая, похоже, использует службы федерации. Сейчас я смотрю на вторую ссылку, но если что-нибудь еще приходит на ум, пожалуйста, дайте мне знать. Спасибо еще раз за помощь! – rcastagna

+0

@rcastagna - Служба проверки подлинности Windows связывается с Identity Server с использованием протокола ws-fed, но это не ADFS. Услуга, на которую вы ссылаетесь, от TJ Robinson - это сервис пользователя (не то же самое, что и эта служба проверки подлинности Windows). –

+0

Роб, я так же смущен, как новорожденный в джентльменском клубе. Я смотрю на проект, на который вы меня сослали, и в нем прямо сказано, что в IIS Express мне нужно включить проверку подлинности Windows. Я не могу использовать этот проект только для проверки подлинности Windows. Для аутентификации AD необходимо подключиться к локальному/OpenId Connect, если пользователь не находится в AD. Пример TJ предоставляет мне объект пользователя после проверки учетных данных, но я по-прежнему получаю сообщение об ошибке, указывающее неправильное имя пользователя/пароль. – rcastagna

Смежные вопросы