无法使用O365 API的刷新令牌生成访问令牌

时间:2018-06-18 08:19:06

标签: azure-active-directory microsoft-graph

使用刷新令牌

生成访问令牌时出现invalid_grant错误
POST https://login.microsoftonline.com/common/oauth2/v2.0/token

响应

{
  "error": "invalid_grant",
  "error_description":
    "AADSTS50173: The provided grant has expired due to it being revoked. The user might have changed or reset their password. The grant was issued on '2018-06-13T23:20:02.9860000Z' and the TokensValidFrom date for this user is '2018-06-15T17:21:11.0000000Z'\r\nTrace ID: 4237d0b8-51fe-43c2-9b5c-ca9148175400\r\nCorrelation ID: d192091b-6277-4ef9-859a-87ba7f87491a\r\nTimestamp: 2018-06-18 07:22:59Z",
  "error_codes": [50173],
  "timestamp": "2018-06-18 07:22:59Z",
  "trace_id": "4237d0b8-51fe-43c2-9b5c-ca9148175400",
  "correlation_id": "d192091b-6277-4ef9-859a-87ba7f87491a"
}

要求用户更改密码,密码已更改。即使在更改密码后也会看到此错误。在这种情况下,刷新令牌是否会变为无效?

3 个答案:

答案 0 :(得分:2)

是的,密码更改后刷新令牌将无效 只有非基于密码的令牌才能保持有效。

enter image description here

(有关详细信息,请参阅active directory token documentation

答案 1 :(得分:1)

环境:Office 365-Okta-本地Active Directory。

错误消息:

提供的授权由于已被撤消而过期,因此需要新的身份验证令牌。用户可能已更改或重置了密码。授予是在'{authTime}'发出的,此用户的TokensValidFrom日期(令牌无效)是'{validDate}'。

解决方法:

您需要做的就是暂时将用户的UserPrincipalName更改为托管域的密码,更新密码,然后再将UserPrincipalName更改为联合域。

第一步是您需要获取用户的ObjectIdUserPrincipalName

  1. 运行此命令以获取ObjectId和用户的UserPrincipalName

    Get-AzureADUser -SearchString pat.doe
    
  2. 现在,运行以下命令将UPN更改为托管域:

    Set-AzureADUser -ObjectId 11bb4111-11a0-1114-8501-111180bf51d3 -UserPrincipalName pat.doe@onmicrosoft.com
    
  3. 接下来,使用以下命令更新密码:

    Set-AzureADUserPassword -ObjectId 11bb4111-11a0-1114-8501-111180bf51d3
    
  4. 将UPN更改回联邦域。运行以下命令:

    Set-AzureADUser -ObjectId 11bb4111-11a0-1114-8501-111180bf51d3 -UserPrincipalName pat.doe@contoso.com
    

就是这样。现在,在Okta或权威源(Active Directory)中重置密码。

答案 2 :(得分:0)

如果在使用 azure-cli 时遇到此错误,则可以通过以下方式解决:

az account clear

az login

发生这种情况是因为更改密码后,基于自己的密码的令牌将失效。然后,您需要清除帐户以再次登录。

更多信息here