使用Azure AD的OAuth2 - 未获得用户同意

Spe*_*aur 17 oauth active-directory azure

我试图让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]
Run Code Online (Sandbox Code Playgroud)

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

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

如果我清除我的缓存并发出授权代码的第一个请求,我将被重定向到登录.但是,登录后我没有任何方式来授权我的应用程序,就像它在我的文档中说的那样:

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

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

Bra*_*ner 11

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

同意是一个两步过程:

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

Azure门户批准的示例:

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

  • 更新 - 我能够使用管理员帐户登录,并且提示我同意.之后我获得了一个访问令牌.使用相同的管理员帐户,我检查了Azure门户上的权限,并确保租户获得了许可,但确实如此.但是在尝试使用非管理员用户获取访问令牌时,我仍遇到同样的错误.我将用户分配设置为否.但我确实分配了我的用户帐户.登录后,是否需要执行任何特殊操作以获取非管理员用户的权限提示? (3认同)
  • 我刚刚尝试删除管理员帐户的委派权限,然后重新启用它们,我现在可以获得非管理员令牌的访问权限! (3认同)
  • 嘿伙计,图片没有加载,请您显示将应用程序添加到租户支持的应用程序列表的步骤,谢谢, (2认同)
  • @DB如果你弄清楚如何做到这一点,你能否用新的答案评论?我也试图解决这个问题. (2认同)