jwt - 修改自定义策略中的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>
解决方案
真正的 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
推荐阅读
- c# - 在 Startup.cs 中使用 .AddGoogle() 时如何在 Web 应用中构建 GmailService?
- metamask - Metamask 无法在私有仲裁区块链中执行正常交易
- c# - 如何正确使用 FileStream.ReadAsync 不阻塞 UI
- c++ - 使用 aruco 和 opencv4 的未解析符号
- python - 与条件函数组合,用于组合 Python 中的每 2 个元素
- c# - Emgu imagebox停靠在面板中,当映射更大的图像时,即使滚动到右下角,图像的某些部分也不会显示
- node.js - 具有 Lambda 集成的无服务器响应模板
- javascript - 将回车转换为换行符 - 正则表达式
- html - 在 Bootstrap 右侧制作按钮
- python - Python 中的货币符号奇怪。相同的代码,不同的系统,不同的结果为什么?