如何在Azure AD B2C的client_credentials流程中配置access_token生命周期?
修改Azure AD B2C守护程序应用Client Credentials流程的Access Token生命周期
对于Azure AD B2C中采用client_credentials流程的守护程序应用,无法通过Azure门户直接配置access_token的生命周期,需借助Microsoft Graph API或Azure AD PowerShell模块来实现,具体操作如下:
方法一:使用Microsoft Graph API
获取具备权限的访问令牌
需获取拥有Policy.ReadWrite.ApplicationConfiguration权限的access_token,可通过应用注册的client_credentials流程或用户授权流程获取。创建令牌生命周期策略
发送POST请求创建指定15分钟有效期的策略:POST https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies Content-Type: application/json { "definition": [ "{\"TokenLifetimePolicy\":{\"Version\":1,\"AccessTokenLifetime\":\"00:15:00\"}}" ], "displayName": "15分钟AccessToken策略", "isOrganizationDefault": false }响应中会返回该策略的
id,后续绑定应用时需要用到。将策略绑定到目标守护程序应用
发送POST请求将策略关联到指定应用:POST https://graph.microsoft.com/v1.0/applications/{CLIENT_ID}/tokenLifetimePolicies/$ref Content-Type: application/json { "@odata.id": "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/{POLICY_ID}" }替换
{CLIENT_ID}为守护程序应用的客户端ID,{POLICY_ID}为上一步创建的策略ID。
方法二:使用Azure AD PowerShell模块
安装并连接Azure AD模块
先安装AzureAD模块(若未安装),再连接到目标租户:# 安装模块(首次执行) Install-Module -Name AzureAD -Force -AllowClobber # 连接到Azure AD B2C租户 Connect-AzureAD -TenantId {TENANT_ID}创建令牌生命周期策略
执行命令创建15分钟有效期的策略:$policy = New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"00:15:00"}}') -DisplayName "15分钟AccessToken策略" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"绑定策略到守护程序应用
将创建好的策略关联到目标应用:Add-AzureADApplicationPolicy -Id {CLIENT_ID} -RefObjectId $policy.Id替换
{CLIENT_ID}为守护程序应用的客户端ID。
注意事项
- 策略生效后,新生成的access_token将采用15分钟有效期,已生成的旧令牌仍按原有效期执行。
- 若需让该策略成为租户默认策略(对所有应用生效),可将
isOrganizationDefault设为true,但建议仅针对特定守护程序应用绑定策略,避免影响其他业务应用。 - 令牌生命周期的格式为
HH:mm:ss,需严格按照该格式设置。
内容的提问来源于stack exchange,提问作者Adrián González Roble
相关产品推荐
相关产品推荐

