IdentityServer 4 Несколько внешних поставщиков Active Directory - PullRequest
0 голосов
/ 04 октября 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

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

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

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

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

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

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

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

0 голосов
/ 05 октября 2018

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

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

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

...