我有一个天蓝色的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
任何帮助将不胜感激。
答案 0 :(得分:0)
我想使用相同的承载令牌访问图形API,因为我不希望服务器重新进行身份验证并要求用户提供凭据。这可能吗?
不。令牌仅适用于一个API。 但是,您无需重新认证。 您可以使用刷新令牌获取MS Graph API的令牌, 准授权流(API中另一个的交换访问令牌), 或者您可以通过隐式授权流程(如果在前端JS应用程序中)获得它。