Active Directory - 验证访问令牌

时间:2017-06-09 10:59:10

标签: java azure active-directory postman microsoft-graph


我正在尝试将Microsoft Azure Active目录集成到我的应用程序中,
这是迄今为止我能够实现的目标以及我被困住的地方 -

1。
我的URI请求授权代码 -

https://login.microsoftonline.com/{{tenant-id}}/oauth2/authorize?
response_type=code%20id_token
&scope=openid
&response_mode=query
&redirect_uri=http://localhost:8081/dashboard.html
&client_id={{client-id}}
&nonce={{nonce}}
&site_id={{site_id}}

我已经能够验证用户并成功将经过身份验证的用户重定向到redirect_uri页面,
成功重定向后,我的前端从AD收到了3件事 -

a) id_token
b) code
c) session_state


2.
使用这些我能够成功地对Microsoft端点发起呼叫,接收访问令牌,以下是呼叫详细信息 -

Endpoint - https://login.microsoftonline.com/{{tenant-id-here}}/oauth2/token
Type - Post
Headers - Content-Type
Body(application/x-www-form-urlencoded) - grant_type, code, client_id, redirect_uri, client_secret, resource


3。 Microsoft端点响应以下数据 -

a) token_type
b) expires_in
c) ext_expires_in
d) expires_on
e) access_token
f) refresh_token
g) id_token


4.
现在根据OAuth流程,我的前端在每次API调用时都会传递access_token,这个access_token应该通过点击一些Microsoft端点进行验证,我认为这是以下一个 -

Endpoint - https://graph.microsoft.com/v1.0/me/messages
Type - Get
Header - Authorization
Header value - Bearer {{Access-token}}
Parameters - client_id

错误讯息
此请求如果失败,则为404

enter image description here

有人可以帮助我理解 -
1.我是否按了正确的端点来验证access_token?
2.如果是,我做错了什么? 3.如果否,哪个是正确的终点?什么应该是它的要求细节?

以下是我的参考文档 -
1. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-oauth-code
2. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

尝试点击以下终点 -

Endpoint - login.microsoftonline.com/{{tenant-id}}/oauth2/authorize
Type - Post
Header - Authorization, Content-Type
Header value for Authorization- Bearer {{Access-token}}
Header value for Content-Type- application/x-www-form-urlencoded
Body(application/x-www-form-urlencoded) - client_id

1 个答案:

答案 0 :(得分:0)

尝试指定资源参数。

即使它被认为是可选的,它也包含在每个样本中:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

因此,当您从https://login.microsoftonline.com/{tenant-id}/oauth2/token检索令牌时,请记住包含resource参数,并将其值设置为https://graph.microsoft.com以获取要在Microsoft Graph API上使用的令牌。

我还可以说,在屏幕截图中,您没有在标头中传递访问令牌。这看起来像授权代码或刷新令牌。您必须传递访问令牌。