【问题标题】:AAD v2.0: unable to use .default scope with device code flowAAD v2.0:无法将 .default 范围与设备代码流一起使用
【发布时间】:2021-01-04 23:25:12
【问题描述】:

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

  • 微软图形:
    • 电子邮件
    • Files.ReadWrite.All
    • offline_access
    • openid
    • 个人资料
    • User.Read

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

AADSTS70011:为输入参数“范围”提供的值无效。 'https://graph.microsoft.com/.default openid offline_access' 中的一个或多个范围相互不兼容。

但是,当我使用通常的授权代码流时,它可以工作。同样,如果我使用作用域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。

【问题讨论】:

    标签: oauth-2.0 azure-active-directory microsoft-graph-api onedrive


    【解决方案1】:

    只要把openid offline_accessscope中去掉,应该是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.在邮递员中,使用下面的请求。

    请求网址:

    POST https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/devicecode
    

    请求正文:

    client_id=<client-id>
    scope=https://graph.microsoft.com/.default
    

    2.在浏览器中,导航到https://microsoft.com/devicelogin,输入代码并登录您的用户帐户,应用程序将让您同意权限,点击Accept

    3.登录成功后,在邮递员中,使用下面的请求。

    请求网址:

    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>
    

    【讨论】:

    • 谢谢!不过,您知道为什么它适用于授权代码流吗?这是验证码的错误吗?
    • @HongOoi 也许,我从未尝试过,这是错误的用法,即使在身份验证代码流中也是如此。
    • 实际上,我只是尝试了仅使用 .default 范围(没有 openid offline_access)的设备代码流,但仍然失败
    • @HongOoi 好吧,让我为你测试和更新。
    • @HongOoi 我可以用/consumers 重现您的问题,看来您需要使用/&lt;tenant-id&gt;,即使您使用的是个人帐户,请参阅我的更新。
    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多