我的项目是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 Identity Provider)。
当用户使用公司帐户登录时,我得到一个名为“ idp_access_token” 的声明的JWT令牌,其中包含来自Azure AD的access_token。它包含我需要该应用程序的一些声明(由于某些原因,我什至看不到B2C令牌中的emailAddress / unique_name,所以我需要从这里获取它...)。
但是我不确定应该如何(在哪里)处理此令牌以及如何访问其中的声明。我可以将它们映射到ClaimPrincipal中吗?因为我想将电子邮件用作“ User.identity.name”。 我应该编写服务(瞬态?)并在需要的地方注入它吗?
答案 0 :(得分:0)
听起来好像您正在使用实际上不需要的功能。通常,嵌入式IdP访问令牌用于调用IdP托管的服务。例如,某个用户使用Facebook登录,而您的应用程序想要调用Facebook API来发布到其Facebook墙上。
作为应用程序开发人员,您不应自己检查或使用令牌,因为您无法信任令牌。如果要从该令牌获取数据,请在B2C策略/用户流中执行相关的声明映射,因为B2C确实会验证令牌并可以信任它。你不能。 IdP提供的服务将对其进行验证,因此也可以信任它。