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

Posted

技术标签:

【中文标题】如何配置 Azure AD 访问令牌的过期时间(使用 ADAL)?【英文标题】:How can I configure the expiration time of an Azure AD access token (using ADAL)? 【发布时间】:2018-04-01 20:21:46 【问题描述】:

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

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

我看不到在代码中操纵访问令牌过期的方法。这是需要在 Azure AD 中完成的事情吗?

【问题讨论】:

你的代码怎么样? 【参考方案1】:

总结

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

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

tl;dr: 不要依赖应用中的令牌生命周期,因为它随时可能发生变化。

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

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

    登录到 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 Configurable Token Lifetime。

【讨论】:

听起来正是我们所需要的。我现在将其标记为答案,如果某些东西不起作用,我会发表评论,但我想它应该。谢谢 @S-Vuk 如果您有任何问题,请告诉我! @DanielDobalian 你知道不用 powershell 的方法吗? @MartinPeck 这些 PowerShell 脚本调用 Azure AD Graph API,因此我相信您可以直接针对 API 执行此操作。如果您正在寻找一些 UI,我认为 Azure AD Graph Explorer 会有所帮助! 刚试过这个,PowerShell 抛出一个错误,说它已于 5 月 30 日退役。信息here 建议现在将“可配置令牌生命周期”功能替换为“条件访问身份验证会话管理”。但是,这是一项高级 Azure AD 功能。有谁知道如何配置令牌,以便可以在 pleb(免费)AD 租户上覆盖默认的 1 小时?谢谢!

以上是关于如何配置 Azure AD 访问令牌的过期时间(使用 ADAL)?的主要内容,如果未能解决你的问题,请参考以下文章

使用刷新令牌 adal azure AD 静默更新访问令牌

是否可以强制禁用 Azure AD B2c 中的访问令牌?

如何使用 Azure AD MSAL 库将角色包含到访问令牌中

刷新的 OAuth2 令牌具有无效签名 (Azure AD OAuth2)

我们如何在后端验证来自 azure AD 的访问令牌?

从 URL Azure AD 捕获访问令牌以用于令牌