0

我使用 Keycloak 作为我的身份和访问管理器。

我有一个用例,我需要将敏感信息传输给另一个可信方。流程是这样的:

  • 我通过该方的 JWK 端点检索受信任方的公钥
  • 我使用受信任方的公钥加密敏感数据
  • 然后我向自己发出一个 JWT 令牌。我用我的私钥签名。
  • 接下来,我将数据与授权标头中的 JWT 令牌一起传输给受信任方
  • 受信方收到我的请求
  • 受信任方调用我的 JWK 端点以获取我的公钥
  • 受信任方使用我的公钥验证我发送的 JWT 令牌
  • 然后受信任方使用其私钥解密敏感数据

通过此流程,受信任方可以确信

  • 敏感数据在传输过程中未被篡改

他们不能自信的是:

  • 我就是他们认为的我;我是发送数据的人。

他们唯一知道的是,他们打电话给我的端点看起来像是属于我的公司的。但是,如果攻击者以这样一种方式拦截请求,即他们返回自己的公钥并能够发布由他们的私钥签名的自己的令牌,那么他们可以将他们想要的任何数据传输给受信任的一方。

这就是 x.509 证书的用武之地。受信任的一方需要一种方法来确定另一端的一方是我。

截至四天前,Keycloak 似乎在 5.0.0-SNAPSHOT 中支持x5c(证书链);这是通过添加/生成新的公钥/私钥对和证书来配置的。如果配置了证书,则x5c可以通过 JWKS 端点使用该参数。

但是,我还需要提供一个x5t(指纹)参数。Keycloak 是否提供或打算在未来提供任何支持?

4

1 回答 1

0

我为KEYCLOAK-9868创建并发出拉取请求,以添加x5tx5t#S256JWK 参数。这已经合并到 Keycloak master 并且应该在 5.0.0 之后的下一个版本中可用。

于 2019-03-19T06:48:12.253 回答