我已经将身份验证转移到MSAL,我想在客户端检查我的声明,例如,查看我在Azure B2C中的对象ID(从而为我的客户端提供身份(。
在服务器上,objectId声明似乎返回为:
{http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier:63fd3d89-26ff-4934-907c-5e6c9da07c45}
URI";http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"是一个已知的声明,可以使用声明访问。Name和我可以使用这样的语句从声明中提取objectId:
Guid userId = new(this.User.FindFirstValue(ClaimTypes.NameIdentifier));
但在客户端上,objectId声明是使用"oid"URI返回的,我不能在服务器上使用相同类型的预定义声明。
显然,我可以将这些定义为共享模块中的常量,但我不能是唯一一个试图从客户端解析声明的人。客户端上是否有MSAL的类似"ClaimTypes"?
我在搜索相同的东西,并找到了与oid
索赔类型(http://schemas.microsoft.com/identity/claims/objectidentifier
(匹配的ClaimConstants.ObjectId
(请参见此处(。
Guid userId = new(this.User.FindFirstValue(ClaimConstants.ObjectId));
它是Microsoft.Identity.Web
程序包的一部分。