【问题标题】:How to get user info with a valid Bearer Token?如何使用有效的 Bearer Token 获取用户信息?
【发布时间】:2019-11-25 18:19:30
【问题描述】:

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

  1. 我可能会使用'string bearerToken = Request.Headers.....;'或者 'string bearerToken = Request.Headers["KeyValue"]' 来获取令牌本身?

  2. 假设我可以得到这个 Bearer Token,如何查看调用者的用户信息?它只是 var userName = User.Identity.Name; 吗?或者我是否可以使用令牌以及如何调用 Microsoft Graph API 来查看用户信息?

【问题讨论】:

    标签: reactjs asp.net-core asp.net-core-webapi spfx azure-authentication


    【解决方案1】:

    如果您使用的是 ASP.NET Core 并使用默认身份验证,那么事情会容易一些。从文档中,您可以看到基于身份提供程序的请求标头中注入了几个令牌,因此在您的情况下,您必须查找 Azure AD 注入的以下标头。这些标头将包含您需要验证声明并获取用户信息的 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 中

    你可以在这里找到更多

    Official Docs

    How To extract Token

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 2021-02-09
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2011-10-06
      相关资源
      最近更新 更多