繁体   English   中英

.NET Core 2.2 Web API Azure门户AD身份验证| 如何使用有效的Bearer令牌获取用户信息?

[英].NET Core 2.2 Web API | Azure Portal AD Authentication | How to get user info with a valid Bearer Token?

在工作中,我们正在制作一个SPFx Web部件React客户端应用程序,该应用程序将作为Web部件部署到SharePoint。 我们的后端是一个ASP.NET Core 2.2 Web API,使用Azure Portal的内置身份验证功能对其进行保护。 前端使用AadHttpClient,该AadHttpClient通过获取已登录用户的当前页面(SharePoint)的上下文来神奇地处理身份验证。这样做,将发生静默身份验证,并且成功通过身份验证将成功进行API调用。 AadHttpClient应该神奇地捆绑了请求标头中的令牌,该标头被发送到后端Web API。 我仍然需要调试实时开发应用程序,并查看如何在后端Web API中检索Bearer令牌。 这些是我接下来的可能步骤?

  1. 我是否可以使用“ string bearerToken = Request.Headers .....;” 或'string bearerToken = Request.Headers [“ KeyValue”]'来获取令牌本身?

  2. 假设我可以获得此承载者令牌,如何查看呼叫者的用户信息? 只是var userName = User.Identity.Name;吗? 还是我会使用令牌,还是会使用令牌以及如何调用Microsoft Graph API来查看用户信息?

谢谢。

如果您使用的是ASP.NET Core并使用默认身份验证,那么事情就容易多了。 从文档中,您可以看到基于Identity provider的请求标头中注入了多个令牌,因此,在您的情况下,您必须查找Azure AD注入的以下标头。 这些标头将包含ID令牌,您需要使用该ID令牌来验证声明并获取用户信息。

X-MS-TOKEN-AAD-ID-TOKEN 
X-MS-TOKEN-AAD-ACCESS-TOKEN 
X-MS-TOKEN-AAD-EXPIRES-ON 
X-MS-TOKEN-AAD-REFRESH-TOKEN

理想情况下,所有索赔都自动注入ClaimsPrincipal中

你可以在这里找到更多

官方文件

如何提取令牌

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM