我有一个工作的ASP.NET Core ADB2C应用程序,它使用自定义策略,并配置为验证本地(ADB2C)和谷歌帐户。
我最近注意到在令牌中缺少了OID声明。
public Task OnTokenValidated(TokenValidatedContext context)
{
_onTokenValidated?.Invoke(context);
return Task.Run(async () =>
{
try
{
var claims = context.SecurityToken.Claims;
问题
当我使用用户流时,OID索赔肯定是存在的。现在我使用自定义策略,基于 github的active-directory-b2c-custom-policy-starterpackSocialAndLocalAccounts。
我知道有很多关于输入和输出请求以及转换的东西,但我在自定义策略方面真的是初学者,无法诊断出缺少什么......
在该默认的自定义策略中,SignUp或Signin.xml包含了这个内容。
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
这意味着对象的id在 "子 "声明中 如果你想要oid声明 你可以像这样添加:
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>