AAD v2.0:无法将 .default 作用域与设备代码流一起使用

AAD v2.0: unable to use .default scope with device code flow

我想知道是否有人 运行 遇到过这个问题。我正在尝试使用 AAD v2.0 和设备代码流向 OneDrive 进行身份验证。我的应用在 Azure 门户中配置了以下权限:

每次我尝试进行身份验证时,我都会从令牌端点收到以下错误消息:

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的时候就不需要了,应用注册的所有权限都会被包括在内。

参考 - https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#the-default-scope

更新:

我可以用/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>