我们使用Azure AD使用用户的Office 365帐户将用户身份验证到我们的WPF应用程序中。这是使用Active Directory身份验证库(ADAL)完成的。
目前,他们每次打开应用程序时都会被提示登录。我们希望更改此设置,以允许通过缓存的令牌登录到应用程序。这是有效的,但我们希望将令牌的到期时间缩短到24小时或更短,在该时间过后需要再次登录。
我看不出有什么方法可以在代码中操纵访问令牌的过期。这是需要在Azure AD中完成的事情吗?
摘要
您不能使用ADAL来配置令牌的过期时间。ADAL是一个身份验证库,可帮助您与令牌服务进行交互,但您可以在服务主体、应用程序或租户上设置令牌生存期配置。
您需要使用Powershell创建一个策略来描述您想要的行为,并将其链接到您的服务主体、租户或应用程序。请记住,如果您正在构建多租户应用程序,租户的所有者可以覆盖您的策略。
tl;dr: 不要依赖应用程序中的令牌生存期,因为它随时可能更改。
创建和设置令牌生存期策略
您可以使用Azure AD Powershell命令设置这些属性。然后运行以下命令来设置访问令牌生存期:
- 登录Powershell
Connect-AzureAD -Confirm
- 创建一个新策略,将访问令牌生存期设置为2小时。您可以将此时间更改为10分钟到1天
New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"02:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"
- 获取策略的ObjectId
Get-AzureAdPolicy
- 将新策略链接到您的应用程序。您可以使用GraphExplorer获取应用程序的objectId
Add-AzureADApplicationPolicy -Id <ObjectId of the Application> -RefObjectId <ObjectId of the Policy>
有关更多示例和完整文档,请查看Azure AD可配置令牌生存期。