JWT 令牌嵌套在 B2C 令牌的 "idp_access_token" 声明中

JWT Token nested in the "idp_access_token" Claim of the B2C token

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

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

用户可以 register/login 作为 B2C 上的标准用户或使用公司帐户登录(azure AD,因此是 openID Connect 身份提供者)。

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

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

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

作为应用开发者,您不应该为自己检查或使用令牌,因为您不能信任它。如果您想要来自该令牌的数据,请在 B2C policy/user 流程中执行相关声明映射,因为 B2C 会验证令牌并可以信任它。你不能。 IdP 提供的服务会验证它,因此也可以信任它。