oauth2.0 如何延长Microsoft在线令牌的期限?

azpvetkf  于 2023-08-02  发布在  其他
关注(0)|答案(1)|浏览(154)

我得到的访问令牌如下。但是,到期时间仍然在60-90分钟之间。

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&scope=SCOPE&expires_in=31536000" "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token"

字符串
希望延长Refresh令牌的持续时间时;它还提供访问令牌。如何延长令牌的有效期?

POST /{tenant}/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token=REFRESH_TOKEN
&client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&scope=SCOPES


我尝试增加过期时间,但不起作用

des4xlb0

des4xlb01#

您可以设置令牌生存期策略,但只能为访问令牌设置。Azure AD不支持为刷新令牌设置令牌生存期策略。
寿命范围为10分钟至1天。默认值为1小时。
创建令牌生存期策略,并在definition属性中指定生存期。

POST https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies
{
    "definition": [
        "{\"TokenLifetimePolicy\":{\"Version\":1,\"AccessTokenLifetime\":\"2:00:00\"}}"
    ],
    "displayName": "2hours policy",
    "isOrganizationDefault": false
}

字符串
该响应将包含tokenLifetimePolicyid
重要的是要理解,您不会将策略分配给应用,而是分配给应用尝试访问的资源应用/服务主体
假设您的应用使用的是Graph API,因此您需要找到Graph API id。

GET v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')


响应包含图形API的servicePrincipal ID。
为策略分配图形API。

POST servicePrincipals/{id}/tokenLifetimePolicies/$ref
{
  "@odata.id":"https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/{policy_id}"
}


现在,当您为应用程序生成访问令牌时,它的过期时间将设置为2小时。
缺点是它会影响所有调用Graph API的应用程序。
参考资料:
Configure token lifetime policies
Token lifetime policies
tokenLifetimePolicy resource type

相关问题