有時,你需要確保使用者每次存取應用程式時都進行身分驗證,即使他們已有使用中的工作階段。這有助於增強安全性或滿足合規要求。下面介紹如何為 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 ,即可有效實現此功能。