Иногда необходимо, чтобы пользователи проходили проверку подлинности при каждом доступе к приложению, даже если у них есть активный сеанс. Это полезно для повышения безопасности или соблюдения требований. Вот как настроить такое поведение для приложений OpenID Connect (OIDC) и SAML.
Для приложений OIDC: используйте prompt=login параметр
OpenID Connect (OIDC) позволяет принудительно проверять подлинность пользователя, включая параметр prompt=login в запрос авторизации. Это гарантирует, что пользователю будет предложено войти при каждом доступе к приложению, независимо от существующего сеанса.
Пример: запрос авторизации OIDC
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?response_type=code
&client_id=blf6xxxx-xxxx-xxxx-21cd2263xxxx
&redirect_uri=https://jwt.ms
&scope=openid profile User.Read
&prompt=login
Основные параметры
response_type=code: задаёт поток кода авторизации.client_id: уникальный идентификатор приложения.redirect_uri: URI, на который перенаправляется пользователь после проверки подлинности.scope: определяет разрешения, запрашиваемые приложением.prompt=login: заставляет пользователя проходить проверку подлинности каждый раз.
Для приложений SAML: используйте ForceAuthn атрибут
В SAML того же эффекта можно добиться, установив атрибут ForceAuthn равным true в запросе проверки подлинности. Это указывает поставщику удостоверений (IdP) требовать от пользователя проверку подлинности, даже если у него есть активный сеанс.
Пример: запрос проверки подлинности SAML
<samlp:AuthnRequest
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="C2d2FH4oiJ5kL6mN7oPQgR9tOUvIw"
Version="2.0"
IssueInstant="2013-03-18T03:28:54.1839884Z"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<ForceAuthn>true</ForceAuthn>
<Issuer
xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
https://www.contoso.com
</Issuer>
</samlp:AuthnRequest>
Основные атрибуты
ForceAuthn=true: гарантирует, что IdP потребует от пользователя проверку подлинности.Issuer: идентифицирует сущность, отправляющую запрос проверки подлинности.
Зачем принудительно проверять подлинность?
Принудительная проверка подлинности при каждом доступе к приложению полезна в таких сценариях, как:
- Повышенная безопасность: предотвращает несанкционированный доступ из-за устаревших сеансов.
- Соответствие требованиям: соблюдение нормативных требований о частой проверке подлинности.
- Конфиденциальные приложения: защита приложений, обрабатывающих критически важные или конфиденциальные данные.
Заключение
Используете ли вы OIDC или SAML, принудительная проверка подлинности пользователей обеспечивает более высокий уровень безопасности и контроля доступа к вашим приложениям. Используйте prompt=login для приложений OIDC и ForceAuthn=true для приложений SAML, чтобы эффективно реализовать эту функцию.