服务主体默认令牌生命周期未更改,如何设置为30分钟?
解决Azure AD令牌有效期设置30分钟未生效的问题
可能原因及排查步骤
1. 验证策略是否成功绑定到服务主体
首先确认你创建的Token Lifetime Policy已正确关联目标服务主体:
# 替换为你的服务主体ObjectId Get-AzureADServicePrincipalPolicy -Id <service-principal-object-id>
如果输出中没有你创建的Valid 30min策略,重新执行绑定命令:
Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id
2. 确认令牌版本兼容性
旧版Token Lifetime Policy仅对v1.0令牌生效,若你的应用使用v2.0令牌,该策略不会起作用:
- 登录Azure AD门户,找到目标应用注册
- 查看应用清单中的
accessTokenAcceptedVersion字段:- 若值为
1:继续使用Token Lifetime Policy,确保后续获取的是v1.0令牌 - 若值为
2:需通过条件访问策略调整v2.0令牌有效期
- 若值为
3. 清除令牌缓存
你获取的可能是缓存中的旧令牌,需强制重新获取:
- 注销应用并重新登录
- 若使用代码调用,清除客户端的令牌缓存(比如MSAL库中的
RemoveAccount方法)
4. 检查是否存在优先级更高的策略
若组织内有其他Token Lifetime Policy(比如组织默认策略),可能覆盖你的设置:
Get-AzureADPolicy -Filter "Type eq 'TokenLifetimePolicy'"
确认你的策略没有被其他优先级更高的策略覆盖,必要时调整策略优先级或删除冲突策略
v2.0应用的解决方案(accessTokenAcceptedVersion=2)
对于v2.0令牌,需通过条件访问策略设置有效期:
- 进入Azure AD门户 -> 安全 -> 条件访问
- 创建新策略,命名为「30分钟访问令牌有效期」
- 分配:选择需要生效的用户/组
- 云应用或操作:选择目标服务主体对应的应用
- 会话:展开后设置「访问令牌生存期」为
00:30:00 - 启用策略并保存
客户端凭据流的特殊情况
若使用客户端凭据流获取令牌,需确保策略绑定到服务主体,且获取的是v1.0令牌(请求https://login.microsoftonline.com/{tenant-id}/oauth2/token端点);v2.0端点的客户端凭据令牌默认有效期为1小时,需通过条件访问策略调整。
内容的提问来源于stack exchange,提问作者user000682
相关产品推荐
相关产品推荐

