IdentityServer 4 Несколько внешних поставщиков Active Directory

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

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

Основным неизвестным для меня является то, как разрешить кому-либо подключить свою AD к моему приложению и затем выполнить процесс входа в систему. В идеале я хотел бы сделать это, имея таблицу БД, в которой я буду хранить всех сторонних поставщиков AD и каким-либо образом загружать их при запуске приложения, но если мне придется вручную добавлять блок кода в мой класс запуска для каждого из них, Я буду жить с этим.

Вторым неизвестным является сам процесс входа в систему; мне нужно иметь отдельную страницу входа для тех компаний, которые используют AD, или используют существующую, но проверяют, есть ли у меня зарегистрированный провайдер для этого домена электронной почты, в который входит пользователь, всякий раз, когда кто-нибудь пытается войти?

2 ответа

Во-первых, ADFS на Server 2016 поддерживает OpenID Connect, поэтому я рекомендую использовать этот подход, если вы можете. LDAP - это еще один вариант, но аутентификация гораздо сложнее в реализации, но, на мой взгляд, не так хороша.

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

Чтобы поддержать это, мы создали специальную реализацию промежуточного программного обеспечения OIDC, которая может принимать URL-адрес полномочий, идентификатор клиента и т. Д. В качестве параметров во время выполнения при вызове Challenge().

Если у вас уже есть рабочая установка с вашим приложением и IdentityServer в качестве поставщика проверки подлинности, то вам следует сначала спросить себя, где вы хотите, чтобы произошла интеграция с другими поставщиками проверки подлинности: Итак, вы хотите разрешить пользователям вашего приложения проходить проверку подлинности с помощью AD или вы хотите, чтобы это произошло на сервере IdentityServer.

Оба являются допустимыми подходами, но имеют разные последствия, а также различные последствия реализации.

Первый вариант - интегрировать AD в ваше приложение. Это означает, что когда пользователи входят в ваше приложение, они могут решать, входить ли в систему с помощью IdentityServer или с помощью своей учетной записи AD. Если вы решите сделать это, то вам вообще не нужно будет прикасаться к вашему IdSrv, вам просто нужно добавить поддержку другого внешнего провайдера аутентификации в ваше приложение и предложить своим пользователям выбирать. Это также означает, что новая опция аутентификации специфична для вашего приложения и не повлияет на другие приложения, использующие ваш IdSrv. Но, конечно, вам придется делать это отдельно для каждого приложения.

Альтернативой было бы добавить это в приложение IdentityServer. Поскольку IdSrv также является приложением ASP.NET Core, оно работает примерно так же: вы предлагаете пользователям несколько способов входа, а затем они перенаправляются обратно в ваше приложение, которое имеет только один вид внешней идентификации: тот, который исходит от вашего IdSrv. Преимущество здесь состоит в том, что вам не нужно менять свои приложения для этого, и все приложения автоматически наследуют функциональность от IdSrv.

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

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

Другой альтернативой может быть использование ADFS, которая является собственным поставщиком аутентификации Microsoft для Active Directory (не только это). В некотором смысле это очень похоже на IdSrv. При интеграции с корпорациями, использующими AD, вполне вероятно, что они также захотят развернуть ADFS или уже запустить ее. Таким образом, вы можете интегрироваться с ним и просто зарегистрировать ADFS в качестве внешнего поставщика проверки подлинности OIDC в ​​IdSrv (или в вашем приложении) и предоставить пользователям выбор.

Другие вопросы по тегам