验证我自己的应用程序后访问Microsoft Graph API

时间:2019-01-21 19:57:45

标签: azure oauth-2.0 active-directory jwt

我有我自己的应用程序,称为appA,是我在Azure Active Directory中注册的。我使用此处概述的授权代码授予过程将用户认证为appA:https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code#request-an-authorization-code。在此过程中,我指定Jwt作为appA最好的资源。用户输入凭据后,我得到一个授权代码,然后使用该代码获得一个Jwt和一个对appA有用的刷新令牌。

用户通过我的应用程序身份验证后,我想检查他们所在的组以进行基于角色的访问控制。由于每个用户有五个以上的组,因此不会在令牌中返回这些组。

这迫使我再次调用图形Api以获取特定用户的组。但是,为此,我需要使用刷新令牌并指定https://graph.microsoft.com作为令牌刷新端点的资源。现在,我返回的令牌可以很好地针对图表Api发出请求。

我的问题是:如何在appA内进行调用以使令牌对图形api有利?看来我将不得不同时处理多个Jwts,并且在概念设计上很难。

1 个答案:

答案 0 :(得分:1)

  

我该如何在appA内进行呼叫以使令牌对   图形API?

您可以直接为MS graph API请求令牌,只需在OAuth 2.0代码授予流程中更改MS graph API(https://graph.microsoft.com)的资源值即可。

请求授权码

https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=<client-id-value>
&response_type=code
&redirect_uri=<redirect-uri-value>
&response_mode=query
&resource=https://graph.microsoft.com
&state=12345

这样的响应: enter image description here使用授权码来请求访问令牌

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=<client-id-value>
&code=<code-value>
&redirect_uri=<redirect-uri-value>
&resource=https://graph.microsoft.com
&client_secret=<key-value>

这样的响应: enter image description here

然后,您可以使用access_token针对MS graph API发出请求。 enter image description here