修改自定义策略中的JwtIssuer ClaimsProvider,实现AD B2C中的JWE

Modify the JwtIssuer ClaimsProvider in the custom policy to achieve the JWE in AD B2C

我正在使用 AD B2C service 进行身份验证。

AD B2C 正在生成签名的 JWT 令牌,但 JWT 令牌中的声明信息暴露给 public。如果任何人获得令牌,他们就可以看到索赔信息。

就我而言,我需要在 JWT 令牌中存储一些敏感信息。那么有什么办法可以在AD B2C中生成JWE token(加密令牌),让指定的收件人可以读取。

是否有任何可能的解决方案来修改自定义策略中的JwtIssuer ClaimsProvider以实现JWE。请推荐

<ClaimsProvider>
      <DisplayName>Token Issuer</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="JwtIssuer">
          <DisplayName>JWT Issuer</DisplayName>
          <Protocol Name="None" />
          <OutputTokenFormat>JWT</OutputTokenFormat>
          <Metadata>
            <Item Key="client_id">{service:te}</Item>
            <Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
            <Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
            <Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" />
          </CryptographicKeys>
          <InputClaims />
          <OutputClaims />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>

真正的 JWE 与 B2C 尚不可能。您可以将声明发送到 REST API,然后将它们发送回 B2C 以加密它们,作为暂时的权宜之计。

JWT 令牌发行者参考 https://docs.microsoft.com/en-us/azure/active-directory-b2c/jwt-issuer-technical-profile

REST API 用法 https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-rest-api-claims-exchange