我正在尝试将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
有人可以帮助我理解 -
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
答案 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上使用的令牌。
我还可以说,在屏幕截图中,您没有在标头中传递访问令牌。这看起来像授权代码或刷新令牌。您必须传递访问令牌。