当前位置: 首页 > 知识库问答 >
问题:

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

沈健
2023-03-14

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

我可以通过使用以下请求成功获得授权码响应:https://login.microsoftonline.com/[app终结点id]/oauth2/authorize?response_type=代码

然后,我使用授权代码通过超文本传输协议帖子请求访问令牌,如下所示(我正在使用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 ”app-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/

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


共有3个答案

苏健柏
2023-03-14

请确保 Azure AD 设置允许添加此类应用。Azure AD 应用程序下有几个属性

艾翼
2023-03-14

尝试将资源作为“https://graph.windows.net'。

对我很有效。

弘兴言
2023-03-14

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

同意是一个两步过程:

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

Azure门户批准示例:

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

 类似资料:
  • 我们正在尝试创建一个微服务模块,其工作是每天一次获取使用Microsoft Graph API(/users/)的所有用户,并对他们做一些事情。 然后我们得到了来自Azure Blade的管理同意。 下面是我获得的令牌的有效负载(部分信息省略) 然后尝试让用户访问,我收到一个错误,说应用程序没有访问该资源的权限。

  • 我以以下方式使用ADFS 3.0中支持的授权流, 浏览器连接到MyService MyService将浏览器重定向到ADFS for OAuth 浏览器连接到ADFS以获取OAuth授权代码 ADFS通过浏览器对用户进行身份验证 ADFS将浏览器重定向回MyService以及授权码 浏览器连接到MyService并传递授权令牌 MyService连接到ADFS并从授权令牌获取访问令牌 但是,访问令

  • 下面的代码使用Google oauth2机制登录用户。我们需要在用户离线时处理用户日历的更新,所以我们最终需要“刷新令牌”。grantOfflineAccess()的结果是否返回刷新令牌(在下面,我可以看到response.code包含一个可能是刷新令牌的值)? 我如何获得一个刷新令牌,可以用来(服务器端)创建新的访问键,以便离线访问用户的谷歌日历?

  • 我有一个由(简化)3部分组成的应用程序: Security-Token-Service(处理OAuth2和OpendId-Connect)具有自己的独立数据库(实际上它是具有ASP. NET Core身份的身份服务器4) API(具有单独的数据库) 和与API通信的SPA 现在的问题是,STS的数据库保存用户数据,在API-DB中还有一个表user accounts,其中包含每个用户的工作负载数据

  • 问题内容: 我想检索用户的所有权限作为权限ID的列表,但是: 给我权限名称列表。怎么做? 问题答案: 关键是获取这样的权限对象: 在这里您可以像这样访问属性: 如果您想要该列表,请执行以下操作: 希望能帮助到你!

  • 如何在android中使用webView获取oAuth2令牌?我知道如何创建一个webview并打开url以获取oAuth2令牌,但我不知道如何在获取后从webview切换回应用程序,并将oAuth2token复制到变量中,有人知道如何做到这一点或知道一个好的tut吗?p、 s.我正在尝试获取oAuth2令牌以访问google api