首页 > 解决方案 > 修改自定义策略中的JwtIssuer ClaimsProvider,实现AD B2C中的JWE

问题描述

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

AD B2C 正在生成已签名的 JWT 令牌,但 JWT 令牌中的声明信息向公众公开。如果有人获得令牌,他们就可以看到索赔信息。

就我而言,我需要在 JWT 令牌中存储一些敏感信息。那么有没有什么办法可以在AD B2C中生成JWE token(加密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>

标签: jwtazure-ad-b2cjweazure-ad-b2c-custom-policy

解决方案


真正的 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


推荐阅读