目前,我正在使用Microsoft的这个库将我的应用程序与Azure AD集成:
https://github.com/AzureAD/azure-activedirectory-library-for-js
我的应用程序拥有自己的用户身份验证。该应用程序仅存储用户名并使用它来映射Azure AD中的用户名。我使用OAuth隐式授权和id_token来记录用户。
以下是我实施的身份验证流程:
问题:
上面步骤5中的库只能验证令牌对Azure租户,客户端ID及其到期时间是否有效。它不需要网络访问。
这意味着即使用户已使用microsoft logout url https://login.microsoftonline.com/tenant-id/oauth2/logout?post_logout_redirect_uri=uri注销,azure的id_token仍然有效。
我的问题是:
有没有办法检查用户是否在Azure AD中注销,然后使id_token和所需用户再次重新登录失效?
更新:
我使用id_token,因为我只要求用户在Azure AD上拥有有效帐户,而无需与Azure AD进一步联系。
答案 0 :(得分:0)
ID令牌在其到期之前一直被视为有效。通常,Web应用程序会将应用程序中用户的会话生存期与为该用户发行的ID令牌的生存期进行匹配。您可以调整ID令牌的生存期,以控制Web应用程序使应用程序会话过期的频率,以及要求用户通过Azure AD重新进行身份验证的频率(以静默方式或以交互方式)。
访问令牌生存期策略控制该资源的访问令牌和ID令牌被视为有效的时间。减少访问令牌生存期属性可以降低恶意行为者长时间使用访问令牌或ID令牌的风险。 (这些令牌无法撤消。)缺点是性能受到不利影响,因为必须更频繁地更换令牌。
要创建策略,请运行以下命令:
PowerShell
New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"02:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"