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