ASP 核心 ADB2C 应用程序中缺少 OID 声明

OID Claim is missing in ASP Core ADB2C application

我有一个可用的 ASP.NET 核心 ADB2C 应用程序,它使用自定义策略,并配置为对本地 (ADB2C) 和 Google 帐户进行身份验证。

我最近注意到令牌中缺少 OID 声明

public Task OnTokenValidated(TokenValidatedContext context)
{
    _onTokenValidated?.Invoke(context);
    return Task.Run(async () =>
    {
        try
        {
            var claims = context.SecurityToken.Claims;

问题

当我使用用户流时,OID 声明肯定存在。现在我正在使用基于 github's active-directory-b2c-custom-policy-starterpack/SocialAndLocalAccounts/

的自定义策略

我知道有很多关于输入和输出声明以及转换的内容,但我真的是自定义策略的初学者,无法诊断缺少的内容...

在该默认自定义策略中,SignUpOrSignin.xml 包含:

<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>

这意味着对象 ID 在 "sub" 声明中。 如果您确实想要 oid 声明,您还可以像这样添加:

<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>