【问题标题】:OAuth2 with Azure AD - Not getting user consent使用 Azure AD 的 OAuth2 - 未获得用户同意
【发布时间】:2016-04-18 22:26:12
【问题描述】:

我正在尝试让 OAuth2 工作流为 Azure AD 正确执行。我正在遵循此来源的指示:https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx

我可以通过使用此请求成功获得授权码响应: https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]

然后,我使用授权代码通过 http 帖子请求访问令牌,如下所示(我正在使用 Postman 进行测试):

POST /[app-endpoint-id]/oauth2/token HTTP/1.1 Host: login.microsoftonline.com Cache-Control: no-cache Postman-Token: ed098281-9aa4-6e5f-915d-0253d9a876d3 Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=[client-id]&code=[authorization_code]&redirect_uri=[redirect_uri]&client_secret=[client-secret]&resource=[app-url]

我从 POST 请求中收到以下错误消息:

{"error":"invalid_grant","error_description":"AADSTS65001: 用户或 管理员未同意使用带有 ID 的应用程序 '应用程序 ID'。为该用户发送交互式授权请求,并 资源。\r\n跟踪 ID: trace-di\r\n相关 ID: 相关 ID\r\n时间戳:2016-01-13 17:18:39Z","error_codes":[65001],"timestamp":"2016-01-13 17:18:39Z","trace_id":"trace-id","correlation_id":"correlation-id"}

如果我清除缓存并首次请求授权码,我将被重定向到登录。但是,登录后我没有任何方法可以授权我的应用程序,就像它在本文档中所说的那样:

//azure.microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

我在这里做错了什么?我正在尝试获取访问令牌。

【问题讨论】:

  • 你具体想做什么?即,您是否尝试让 WebAPI 应用程序与 AAD 或移动应用程序一起使用,使用什么语言?
  • 我正在尝试让 WebAPI 应用程序在 Java 中与 AAD 一起工作。
  • 我遇到了同样的问题,但我使用的是 PHP。

标签: azure oauth active-directory


【解决方案1】:

您遇到的问题是您用于访问您的应用程序的租户尚未将您的应用程序添加到受支持的应用程序列表中。它告诉您以管理员身份使用交互式流程。

同意是一个两步过程:

1) 首先,租户的管理员必须批准该应用程序。这可以通过 1) 在希望使用该应用的租户的 Azure 门户中完成,或 2) 通过启动该应用并在您登录时使用该应用的管理员凭据来完成。

Azure 门户批准示例:


(来源:azurecomcdn.net

2) 其次,在管理员同意可以使用该应用后,任何其他用户(非管理员)在首次使用该应用时将被提升为同意其个人信息。

【讨论】:

  • 谢谢!出于某种原因,我的印象是我是一名管理员,因为我创建了应用程序,但你的帖子让我意识到我不是。实际上,在我在这里发布我的问题之前,我已经在租户应用程序的 Azure 门户中授予了委托权限,这也让我相信我拥有管理员权限。
  • 更新 - 我能够使用管理员帐户登录,并且系统提示我同意。之后我得到了一个访问令牌。使用同一个管理员帐户,我检查了 Azure 门户上的权限,并确保租户拥有权限,并且确实如此。但是在尝试使用非管理员用户获取访问令牌时,我仍然遇到同样的错误。我将需要用户分配设置为否。但无论如何我确实分配了我的用户帐户。非管理员用户登录后是否需要执行任何特殊操作才能获得权限提示?
  • 我刚刚尝试删除管理员帐户上的委派权限,然后重新启用它们,我现在可以获得非管理员令牌的访问令牌!
  • 您好,图片加载不出来,能否请您显示将应用程序添加到租户支持的应用程序列表的步骤,谢谢,
  • @D.B 如果您知道如何执行此操作,能否请您评论一个新的答案?我也在努力解决这个问题。
【解决方案2】:

尝试在发布请求中以“https://graph.windows.net”的形式提供资源。

它对我有用。

【讨论】:

【解决方案3】:

确保您的 Azure AD 设置允许添加此类应用。 Azure AD 应用程序 > 管理 > 用户设置下有几个属性会影响应用的注册方式。您组织中的某个人可能已经完全关闭了应用注册,或者严重限制了选项。您可以检查这些设置。对于这个问题,有几个可用的解决方案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多