我正在使用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>
答案 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