powershell 我的服务主体的默认令牌生存期未更改

wko9yo5t  于 2022-12-26  发布在  Shell
关注(0)|答案(2)|浏览(182)

我想使令牌仅在30分钟内对用户可用。如果我们配置令牌生存期策略,这是可行的,但它不起作用,因为我仍然获得有效期为1小时的令牌。
遵循此建议文档https://learn.microsoft.com/en-us/azure/active-directory/develop/configure-token-lifetimes#create-a-policy-for-web-sign-in

$policy = New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"00:30:00"}}') -DisplayName "Valid 30min" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"

# Get ID of the service principal
$sp = Get-AzureADServicePrincipal -Filter "DisplayName eq '<service principal display name>'"

# Assign policy to a service principal
Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id

如何使代币的有效期仅为30分钟?

eanckbw9

eanckbw91#

我尝试在我的环境中重现相同的结果,得到以下结果:

我使用以下命令创建了策略:

$policy = New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"00:30:00"}}') -DisplayName "Valid 30min" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"

$sp = Get-AzureADServicePrincipal -Filter "DisplayName eq '<service principal display name>'"

Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id

为了将策略添加到服务主体,我使用了以下命令:

$sp = Get-AzureADServicePrincipal -Filter "DisplayName eq 'ServicePricipalName'"

Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id

Get-AzureADPolicyAppliedObject -id PolicyID

添加策略后,我为Azure服务主体生成了令牌,但令牌生存期策略失败。

    • 生成的访问令牌过期时间为1小时:**

    • 要解决此问题,请尝试通过将IsOrganizationDefault的值更改为$True**来创建令牌生存期策略,如下所示:
$policytest = New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"00:30:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $true -Type "TokenLifetimePolicy"

    • 我能够成功获取令牌,有效期为30分钟。**

如果问题仍然存在,请检查该策略是否未被具有更高优先级的策略覆盖。

yv5phkfx

yv5phkfx2#

我遵循了相同的文档步骤,并在本地环境中对此进行了测试,我能够将服务主体的访问令牌生存期设置为30分钟。
步骤1:为其中一个生存期为30分钟的SP创建配置生存期令牌策略,如下所示。

步骤2:从 Postman 处创建访问令牌,并通过jwt.ms验证访问令牌的到期时间,如下所示。

此策略有几个策略评估限制和优先级规则,有关详细信息,请参阅本文档。

相关问题