Azure OAuth登录 - 工作正常,现在收到AADSTS700022/AADSTS700023错误

Ste*_*lds 5 login azure azure-active-directory office365api

我们已经登录办公室365登陆我们的网站工作了几个月,突然间,它已经坏了.

截至今天上午(英国时间),我们开始收到"AADSTS700023:使用提供的授权码请求访问令牌时,输入参数范围的提供值不能为空.请指定有效范围." 我们通过https://login.microsoftonline.com/common/oauth2/v2.0/token请求令牌时出现错误

看看文档看来,范围是必需的并且没有被传递,所以无论它工作了几个月,我都添加了它.现在我得到了一个不同的错误..

AADSTS700022:输入参数范围的提供值无效,因为它包含多个资源.范围https://outlook.office.com/mail.send mail.readwrite calendars.readwrite tasks.readwrite contacts.readwrite openid profile offline_access无效.

当我们首先调用授权端点时,这是传递的范围,并且从该调用返回时很好,但是当我们尝试获取令牌时它会失败.

目前是否存在针对365的常见登录问题,或者是否存在我做错的事情以及微软决定"修复"他们的结局?

Nan*_* Yu 5

AADSTS700023:使用提供的授权代码请求访问令牌时,输入参数范围的提供值不能为空.请指定有效范围.

获取令牌以访问Azure AD V2.0中的资源时,您需要特定的scope参数,该参数指示应用请求授权的资源和权限.请参阅Azure AD v2.0中OAuth 2.0授权代码流的工作方式.

AADSTS700022:输入参数范围的提供值无效,因为它包含多个资源.范围https://outlook.office.com/mail.send mail.readwrite calendars.readwrite tasks.readwrite contacts.readwrite openid profile offline_access无效.

从Azure AD发出的访问令牌仅适用于一个资源,您不能使用相同的令牌来访问多个资源.这意味着您应该在令牌请求中指定一个资源的范围.调查范围:

  • https://outlook.office.com/mail.send 是Office 365 Unified Mail API的范围
  • mail.readwrite calendars.readwrite tasks.readwrite contacts.readwrite 是Microsoft Graph API的范围.

您无法获取访问令牌来访问两个资源.您可以Mail.Send使用Microsoft Graph API 请求范围发送邮件,而不是使用O365邮件rest api的范围.

  • 最后解决了,我的假设是正确的。使用代码获取图形 API(或 Outlook,但我首先使用图形)的令牌,然后使用其中的刷新令牌值获取 Outlook API 的令牌。 (2认同)