如何配置Azure AD访问令牌的过期时间(使用ADAL)?

S-V*_*Vuk 5 c# access-token oauth-2.0 azure-active-directory adal

我们使用Azure AD通过其Office 365帐户将用户身份验证到我们的WPF应用程序中。这是使用Active Directory身份验证库(ADAL)完成的。

当前,每次打开应用程序时,系统都会提示他们登录。我们要更改此设置,以允许通过缓存的令牌登录到应用程序。这可行,但是我们希望将令牌的到期时间缩短到24小时或更短,需要在该时间过去之后再次登录。

我没有找到一种方法来控制代码中访问令牌的过期。这是在Azure AD中需要完成的事情吗?

Dan*_*ian 10

概括

您不能使用 ADAL 来配置令牌的到期时间。ADAL 是一个身份验证库,可帮助您与令牌服务进行交互,但您可以在服务主体、应用程序或租户上设置令牌生存期配置。

您需要使用 Powershell 创建描述所需行为的策略,并将其链接到您的服务主体、租户或应用程序。请记住,如果您正在构建多租户应用程序,租户的所有者可以覆盖您的策略。

tl;dr:不要依赖应用程序中的令牌生命周期,因为它可以随时更改。

创建和设置令牌生命周期策略

可以使用Azure AD Powershell 命令设置这些属性。然后运行以下命令来设置访问令牌生命周期:

  1. 登录到 Powershell。

Connect-AzureAD -Confirm

  1. 创建新策略以将访问令牌生存期设置为 2 小时。您可以将其更改为 10 分钟到 1 天之间。

New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"02:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"

  1. 获取策略的 ObjectId。

Get-AzureAdPolicy

  1. 将新策略链接到您的应用程序。您可以使用GraphExplorer获取应用的objectId

Add-AzureADApplicationPolicy -Id <ObjectId of the Application> -RefObjectId <ObjectId of the Policy>

有关更多示例和完整文档,请查看Azure AD 可配置令牌生命周期