我想更改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 <policy-id>
我确认我的政策已应用于我的申请......
...然而,当我尝试在登录期间(使用ADAL)检索新的访问令牌时,我可以看到有效期限仍然是默认的1小时。
我做错了什么?
答案 0 :(得分:0)
首先,您需要按照以下10分钟的时间参数设置格式进行操作。
00:10:00
此外,在我的实验室中,我发现仅当参数 IsOrganizationDefault 设置为 $ true 时,该策略才有效。即使已明确分配给特定的应用程序或服务原则,也无法执行该策略。
答案 1 :(得分:0)
我仅使用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。