【问题标题】:Azure AD Configurable Token Lifetimes not being Applied未应用 Azure AD 可配置令牌生命周期
【发布时间】:2017-06-07 13:05:36
【问题描述】:

我想更改 Azure AD as shown here 中的默认令牌生命周期,但似乎没有应用更改。

我正在使用AzureAdPreview module from the PowerShell Gallery 中的 PowerShell cmdlet 运行以下命令:

New-AzureADPolicy -Definition @("{`"TokenLifetimePolicy`":{`"Version`":1, `"AccessTokenLifetime`":`"10:00`",`"MaxInactiveTime`":`"10:00`",`"MaxAgeSingleFactor`":`"10:00`",`"MaxAgeMultiFactor`":`"10:00`",`"MaxAgeSessionSingleFactor`":`"10:00`",`"MaxAgeSessionMultiFactor`":`"10:00`"}}") -DisplayName AbsoluteMinimumPolicyScenario -IsOrganizationDefault $false -Type TokenLifetimePolicy

我想将所有令牌的生命周期设置为最少 10 分钟,以便在我的 Web API 中测试一些身份验证代码。

然后我将此策略分配给我在 Azure AD 中注册的应用程序:

Add-AzureADApplicationPolicy -ObjectId <application-object-id> -RefObjectId <policy-id>

使用Get-AzureADPolicyAppliedObject -ObjectId &lt;policy-id&gt; 我确认我的政策已应用于我的申请...

...然而,当我尝试在登录期间(使用 ADAL)检索新的访问令牌时,我可以看到到期日期仍为默认值 1 小时。

我做错了什么?

【问题讨论】:

  • 您是否将策略分配给您请求令牌的资源?例如,如果我构建了一个需要访问 Microsoft Graph 的 Android 应用程序,则需要在 Microsoft Graph 服务主体上设置策略。

标签: access-token azure-active-directory


【解决方案1】:

首先,您需要遵循以下格式设置为 10 分钟的时间参数。

00:10:00

此外,在我的实验室中,我发现该策略只有在参数 IsOrganizationDefault 设置为 $true 时才有效。即使明确分配给特定应用程序或服务原则,也无法强制执行该策略。

【讨论】:

  • 将IsOrganizationDefault 设置为$true 是这项工作的原因——但它会影响组织中的其他应用程序,这是一个很大的禁忌。在我看来,这是 Azure AD 中的一个错误;知道什么时候会解决这个问题吗?
  • @SameerSingh,安迪所说的并不准确。您可以在服务主体或应用程序上设置策略就可以了。值得一提的是,必须在您请求令牌的资源上设置策略,因为这决定了令牌的生命周期。
  • @DanielDobalian 我刚刚意识到我在 Azure 中的应用程序有两个对象 ID:一个在 Azure Active Directory -> 企业应用程序 -> 所有应用程序 -> {我的应用程序} -> Azure Active Directory 中的属性和另一个 -> 应用注册 -> {我的应用程序} -> 属性。哪一个?现在将进行一些快速测试。
  • @SameerSingh 完全有效。我将更新文档以更清楚地说明您遇到的问题和更有限的样本。
  • 我没有忘记!我们正在努力获得基本功能 GA,届时将重构围绕它的文档。不幸的是,我目前无法估计 GA 的时间。几个月前我进行了更新,至少在Configurable policy property details 部分提及您的反馈,但可能需要在更多地方提及。
【解决方案2】:

我只使用New-AzureADPolicy cmdlet 并设置-IsOrganizationDefault $true 而不是$false 使其工作。效果需要一段时间才能看到。所以等待大约 30 分钟到一个小时(我不知道确切的时间)。之后,您的新策略将被创建和应用。另请记住,这是 PowerShell,因此 cmdlet 中没有空格。

例子:

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

多行版本:

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

Microsoft 可能会使用 IsOrganizationDefault $true 解决此问题。在问题中阅读更多信息:Azure AD Configurable Token Lifetimes not being Applied。

【讨论】:

  • 如另一个答案中详述,如果您使用-IsOrganizationDefault 参数并将其设置为$true,它会起作用。缺点是,使用此参数,它是全局设置而不是应用程序设置。此外,这个答案也发布在Configurable token lifetimes in Azure Active Directory。只是将其作为参考。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2020-03-09
  • 2020-08-20
  • 1970-01-01
相关资源
最近更新 更多