AAD v2.0:无法将 .default 作用域与设备代码流一起使用
AAD v2.0: unable to use .default scope with device code flow
我想知道是否有人 运行 遇到过这个问题。我正在尝试使用 AAD v2.0 和设备代码流向 OneDrive 进行身份验证。我的应用在 Azure 门户中配置了以下权限:
- 微软图表:
- 电子邮件
- Files.ReadWrite.All
- offline_access
- openid
- 简介
- User.Read
每次我尝试进行身份验证时,我都会从令牌端点收到以下错误消息:
AADSTS70011: The provided value for the input parameter 'scope' is not valid. One or more scopes in 'https://graph.microsoft.com/.default openid offline_access' are not compatible with each other.
但是,当我使用通常的授权代码流程时,它是有效的。同样,如果我使用范围 https://graph.microsoft.com/Files.ReadWrite.All openid offline_access
而不是 https://graph.microsoft.com/.default openid offline_access
,它也有效。
.default
作用域是否与设备代码流不兼容?
更多信息:
该应用可供“任何组织目录中的帐户(任何 Azure AD 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)”使用。我正在向“消费者”租户进行身份验证,因为我想访问我的个人 OneDrive。
把scope
中的openid offline_access
去掉就可以了,应该是https://graph.microsoft.com/.default
,当你用/.default
的时候就不需要了,应用注册的所有权限都会被包括在内。
更新:
我可以用/consumers
和auth url中的个人帐户重现你的问题,如果我将其修改为/<tenant-id>
,它可以正常工作,你可以参考步骤下面。
1.In邮递员,请使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/devicecode
请求正文:
client_id=<client-id>
scope=https://graph.microsoft.com/.default
2.In浏览器,导航至https://microsoft.com/devicelogin
,输入代码并登录您的用户帐户,该应用程序会让您同意权限,单击Accept
。
3.After登录成功,在邮递员中,使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
请求正文:
grant_type: urn:ietf:params:oauth:grant-type:device_code
client_id: <client-id>
device_code: <device_code in the screenshot of step 1>
我想知道是否有人 运行 遇到过这个问题。我正在尝试使用 AAD v2.0 和设备代码流向 OneDrive 进行身份验证。我的应用在 Azure 门户中配置了以下权限:
- 微软图表:
- 电子邮件
- Files.ReadWrite.All
- offline_access
- openid
- 简介
- User.Read
每次我尝试进行身份验证时,我都会从令牌端点收到以下错误消息:
AADSTS70011: The provided value for the input parameter 'scope' is not valid. One or more scopes in 'https://graph.microsoft.com/.default openid offline_access' are not compatible with each other.
但是,当我使用通常的授权代码流程时,它是有效的。同样,如果我使用范围 https://graph.microsoft.com/Files.ReadWrite.All openid offline_access
而不是 https://graph.microsoft.com/.default openid offline_access
,它也有效。
.default
作用域是否与设备代码流不兼容?
更多信息:
该应用可供“任何组织目录中的帐户(任何 Azure AD 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)”使用。我正在向“消费者”租户进行身份验证,因为我想访问我的个人 OneDrive。
把scope
中的openid offline_access
去掉就可以了,应该是https://graph.microsoft.com/.default
,当你用/.default
的时候就不需要了,应用注册的所有权限都会被包括在内。
更新:
我可以用/consumers
和auth url中的个人帐户重现你的问题,如果我将其修改为/<tenant-id>
,它可以正常工作,你可以参考步骤下面。
1.In邮递员,请使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/devicecode
请求正文:
client_id=<client-id>
scope=https://graph.microsoft.com/.default
2.In浏览器,导航至https://microsoft.com/devicelogin
,输入代码并登录您的用户帐户,该应用程序会让您同意权限,单击Accept
。
3.After登录成功,在邮递员中,使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
请求正文:
grant_type: urn:ietf:params:oauth:grant-type:device_code
client_id: <client-id>
device_code: <device_code in the screenshot of step 1>