Имея Identity Server 4, можем ли мы реализовать единый вход в систему, используемый различными приложениями, с одним сервером аутентификации пользователя?
Если да, то как мы можем это сделать? Имеются ли справочные материалы для того же?
Имея Identity Server 4, можем ли мы реализовать единый вход в систему, используемый различными приложениями, с одним сервером аутентификации пользователя?
Если да, то как мы можем это сделать? Имеются ли справочные материалы для того же?
На самом деле, вам не нужно ничего делать, чтобы включить единый вход. Он доступен по умолчанию, но не для всех сценариев.
Для того, чтобы SSO работала, есть только одно правило:
Пользователь должен войти в систему на веб-сайте IdentityServer, потому что именно там должен быть размещен файл cookie системы единого входа.
Система единого входа недоступна для типов предоставления, которые не требуют от пользователя войдите на сайт IdentityServer.
Как это работает:
Пользователь посещает webapp1, нажимает кнопку входа в систему и перенаправляется на веб-сайт IdentityServer для входа в систему. IdentityServer просканирует файл cookie системы единого входа, но не найдет его, поскольку это первый раз, а пользователь еще не прошел проверку подлинности.
После успешного входа в систему cookie SSO сохраняется (на веб-сайте IdentityServer), а аутентифицированный пользователь возвращается в webapp1.
Затем пользователь посещает webapp2. Пока пользователю не требуется аутентификация, он будет анонимным посетителем.
Аутентификация требуется, когда пользователь нажимает кнопку входа в систему или посещает защищенную страницу (например, защищенную атрибутом [Authorize]
). Это запускает процесс аутентификации, который перенаправляет пользователя на веб-сайт IdentityServer.
IdentityServer снова будет сканировать файл cookie системы единого входа, но на этот раз он найден. После аутентификации пользователю не требуется повторно входить в систему, вместо этого он возвращается на веб-сайт как аутентифицированный пользователь.
Обратите внимание, что клиент может отменить файл cookie системы единого входа, установив запрос = логин.
Также обратите внимание, что файлы cookie не являются кроссбраузерными. При посещении webapp2 в другом браузере пользователю потребуется снова войти в систему, поскольку файл cookie системы единого входа недоступен для этого браузера.
Да, вы можете, именно для этого используется IdentityServer4 (SSO и аутентификация). Имеется документация и некоторые образцы.