我使用 Keycloak 作为我的身份和访问管理器。
我有一个用例,我需要将敏感信息传输给另一个可信方。流程是这样的:
- 我通过该方的 JWK 端点检索受信任方的公钥
- 我使用受信任方的公钥加密敏感数据
- 然后我向自己发出一个 JWT 令牌。我用我的私钥签名。
- 接下来,我将数据与授权标头中的 JWT 令牌一起传输给受信任方
- 受信方收到我的请求
- 受信任方调用我的 JWK 端点以获取我的公钥
- 受信任方使用我的公钥验证我发送的 JWT 令牌
- 然后受信任方使用其私钥解密敏感数据
通过此流程,受信任方可以确信
- 敏感数据在传输过程中未被篡改
他们不能自信的是:
- 我就是他们认为的我;我是发送数据的人。
他们唯一知道的是,他们打电话给我的端点看起来像是属于我的公司的。但是,如果攻击者以这样一种方式拦截请求,即他们返回自己的公钥并能够发布由他们的私钥签名的自己的令牌,那么他们可以将他们想要的任何数据传输给受信任的一方。
这就是 x.509 证书的用武之地。受信任的一方需要一种方法来确定另一端的一方是我。
截至四天前,Keycloak 似乎在 5.0.0-SNAPSHOT 中支持x5c
(证书链);这是通过添加/生成新的公钥/私钥对和证书来配置的。如果配置了证书,则x5c
可以通过 JWKS 端点使用该参数。
但是,我还需要提供一个x5t
(指纹)参数。Keycloak 是否提供或打算在未来提供任何支持?