首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Office 365 Oauth2身份验证中获取令牌

在Office 365 Oauth2身份验证中获取令牌
EN

Stack Overflow用户
提问于 2016-08-02 08:03:45
回答 2查看 14.1K关注 0票数 6

我正在为基于java的服务器端应用程序中的Office 365帐户实现Oauth 2身份验证。在阅读了这些文档之后,我完成了以下工作:

  • 我有办公室365的订阅。
  • 我已经创建了一个应用程序在Azure Actve目录,这是必要的身份验证web应用程序使用office 365帐户。
  • 我有客户身份和秘密。我也给了Azure应用程序所有的许可。
  • 我使用Url请求授权代码:

id={client_id}&response_type=code&redirect_uri={redirect url}&response_mode=query

作为对此的回应,我得到了预期的授权代码:

代码语言:javascript
运行
复制
http://localhost:8080?code={authorication code}&session_state=259479e4-84aa-42ea-91e9-9e919cc99587

现在,我需要获得令牌和用户名(用户登录的用户ID ),因为我需要用户名来进行进一步的处理。为此,我使用了这里描述的方法:

https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/

即使用这样的POST请求:

代码语言:javascript
运行
复制
POST /{tenant}/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=2d4d11a2-f814-46a7-890a-274a72a7309e
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrqqf_ZT_p5uEAEJJ_nZ3UmphWygRNy2C3jJ239gV_DBnZ2syeg95Ki-374WHUP-i3yIhv5i-7KU2CEoPXwURQp6IVYMw-DjAOzn7C3JCu5wpngXmbZKtJdWmiBzHpcO2aICJPu1KvJrDLDP20chJBXzVYJtkfjviLNNW7l7Y3ydcHDsBRKZc3GuMQanmcghXPyoDg41g8XbwPudVh7uCmUponBQpIhbuffFP_tbV8SNzsPoFz9CLpBCZagJVXeqWoYMPe2dSsPiLO9Alf_YIe5zpi-zY4C3aLw5g9at35eZTfNd0gBRpR5ojkMIcZZ6IgAA
&redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F
&resource=https%3A%2F%2Fservice.contoso.com%2F
&client_secret=p@ssw0rd

现在的问题是,当我发送这个帖子请求时,我总是会收到错误代码,有时是400或402等等。我还会在chrome中使用post man来检查呼叫的响应。它总是这样返回错误:

代码语言:javascript
运行
复制
{
  "error": "invalid_grant",
  "error_description": "AADSTS65001: The user or administrator has not consented to use the application with ID. Send an interactive authorization request for this user and resource.\r\nTrace ID: b834315e-ccb3-4533-b7c9-4af7b34054b9\r\nCorrelation ID: 784f18da-5479-4b69-b939-0067abfcc460\r\nTimestamp: 2016-08-02 07:28:22Z",
  "error_codes": [
    65001
  ],
  "timestamp": "2016-08-02 07:28:22Z",
  "trace_id": "b834315e-ccb3-4533-b7c9-4af7b34054b9",
  "correlation_id": "784f18da-5479-4b69-b939-0067abfcc460"
}

(注意:我已经注册了所有使用管理员登录的应用程序),我已经尝试了大量的尝试来找出哪里出了问题。我在Azure活动目录中添加了多个应用程序,但我总是得到类似的响应。

我请求专业人士帮助我。。。好了!实际上,我希望允许用户点击Office365web外接程序中的一个按钮,并使用oauth2身份验证登录到我们的系统。这将是伟大的,有人建议我一些良好的教程,以成功地实现这一点。

EN

回答 2

Stack Overflow用户

发布于 2016-08-03 02:45:04

如果要为Office 365请求访问令牌,则发送请求中的资源参数应该是https%3A%2F%2Foutlook.office.com

你也可以像菲利普建议的那样使用微软图形。关于如何选择端点,您可以参考这里

票数 0
EN

Stack Overflow用户

发布于 2018-07-03 08:16:23

接收错误代码"interaction_required“或"invalid_grant”错误代码意味着“刷新令牌”存在问题,建议:

  • 丢弃当前刷新令牌
  • 请求新授权代码
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38714948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档