【问题标题】:JWT Token nested in the "idp_access_token" Claim of the B2C tokenJWT 令牌嵌套在 B2C 令牌的“idp_access_token”声明中
【发布时间】:2021-02-13 19:42:24
【问题描述】:

我的项目是一个 MVC Core 3.1 Web 应用程序。 身份验证基于 Microsoft.identity.web 模板在 Azure AD B2C 中登录用户。

您可以在此处找到示例:https://github.com/AzureAD/microsoft-identity-web/wiki#samples

用户可以在 B2C 上注册/登录为标准用户或使用公司帐户(azure AD,即 openID Connect 身份提供商)登录。

当用户使用公司帐户登录时,我会收到一个 JWT 令牌,其中包含名为 "idp_access_token" 的声明,其中包含来自 Azure AD 的 access_token。它包含应用程序所需的一些声明(由于某些原因,我什至看不到 B2C 令牌中的 emailAddress/unique_name,所以我需要从这里获取它......)。

但我不确定我应该如何(以及在​​哪里)处理此令牌以及如何访问其中的声明。我可以将它们映射到 claimPrincipal 中吗?因为我想将电子邮件用作“User.identity.name”。 我应该编写一个服务(瞬态?)并在需要的地方注入它吗?

【问题讨论】:

    标签: jwt asp.net-core-mvc asp.net-identity openid-connect azure-ad-b2c


    【解决方案1】:

    听起来您正在使用您实际上并不需要的功能。通常嵌入式 IdP 访问令牌用于调用 IdP 托管的服务。例如,用户使用 Facebook 登录,而您的应用想要调用 Facebook API 以在他们的 Facebook 墙上发帖。

    您作为应用程序开发人员不应为自己检查或使用令牌,因为您无法信任它。如果您想要来自该令牌的数据,请在您的 B2C 策略/用户流中执行相关的声明映射,因为 B2C 确实验证了该令牌并可以信任它。你不能。 IdP 提供的服务会对其进行验证,因此也可以信任它。

    【讨论】:

      猜你喜欢
      • 2017-05-17
      • 2016-12-23
      • 2021-04-30
      • 2018-02-09
      • 2019-06-03
      • 2020-01-23
      • 1970-01-01
      • 2020-06-01
      • 2017-02-13
      相关资源
      最近更新 更多