有时,你需要确保用户每次访问应用时都进行身份验证,即使他们已有活动会话。这有助于增强安全性或满足合规要求。下面介绍如何为 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,强制用户身份验证都能确保更高级别的安全性,并更好地控制对应用的访问。对 OIDC 应用使用 prompt=login ,对 SAML 应用使用 ForceAuthn=true ,即可有效实现这一功能。