如何基于访问令牌获取用户信息

时间:2019-01-21 08:21:02

标签: azure-active-directory

我有一个天蓝色的AD安全Web API,正在使用承载令牌进行身份验证。在Azure AD上的应用程序注册已全部完成。我可以使用承载令牌访问安全的API并获得预期的响应。

我面临的问题是我不知道如何获取用户信息,我可以在其中获得用户所属的组织名称。我知道有Microsoft Graph API,在这里我可以获取此详细信息,但要访问它,我需要创建另一个承载令牌,然后只能从MS graph API访问并获取详细信息。我想使用相同的承载令牌访问图形API,因为我不希望我的服务器重新进行身份验证并要求用户提供凭据。这可能吗?

我用来获取访问令牌的代码是:

AuthenticationContext authContext = new AuthenticationContext(
"https://login.microsoftonline.com/<My Tenant Id>");

AuthenticationResult token = authContext.AcquireTokenAsync(<secured web 
api resource id>,<clientId Id>, new Uri(redirectUri),new 
PlatformParameters(PromptBehavior.Always)).Result;

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new 
AuthenticationHeaderValue(token.AccessTokenType, token.AccessToken);

HttpResponseMessage httpResponse = client.GetAsync("Secured Web API 
call").Result;

这很好。

几行代码之后,当尝试访问Microsoft graph API时,它给出没有授权的错误代码。

Grpah API网址:“ https://graph.microsoft.com/v1.0/organization

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

我想使用相同的承载令牌访问图形API,因为我不希望服务器重新进行身份验证并要求用户提供凭据。这可能吗?

不。令牌仅适用于一个API。 但是,您无需重新认证。 您可以使用刷新令牌获取MS Graph API的令牌, 准授权流(API中另一个的交换访问令牌), 或者您可以通过隐式授权流程(如果在前端JS应用程序中)获得它。