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

时间:2020-10-01 03:06:02

标签: jwt azure-ad-b2c jwe azure-ad-b2c-custom-policy

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

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

就我而言,我需要在JWT令牌中存储一些敏感信息。因此,有什么方法可以在AD B2C中生成JWE令牌(加密令牌),以便只有预期的收件人才能读取它。

有什么可能的解决方案来修改自定义策略中的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>

1 个答案:

答案 0 :(得分:1)

还无法在B2C上实现真正的JWE。您可以将声明发送到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