3

我使用 keycloak 身份验证服务器和应用程序进行了以下设置:

  1. 用户在应用程序客户端登录,将 un/pw 发送到服务器
  2. 应用程序服务器将 un/pw 发送到 keycloak 服务器以获取令牌
  3. keycloak 服务器将令牌发送回应用程序服务器
  4. 应用服务器输出带有敏感数据的网页

我想使用 RS256 来签署我的令牌。当我尝试在客户端获取令牌时,它们已使用 RS256 正确签名,但一旦我尝试在应用程序服务器上获取令牌,就会使用 HS256。如何在这两种情况下设置 keycloak 以使用 RS256?

我使用 /auth/realms/{REALM_NAME}/protocol/openid-connect/token 端点和 keycloak 10.0.1。

密钥斗篷配置:

  • 钥匙
    • 领域的默认签名算法设置为 RS256
    • 第一个配置:领域密钥是 HS256、AES 和 RS256(按此顺序列出),优先级均为 100
    • 第二个配置:我将 RS256 键优先级设置为更高的值,但使用的是 HS256
    • 作为最后一次尝试,我将领域中的所有其他键都设为被动。签署令牌时,keycloak 只是生成了一个“备用 hs256”密钥来使用,而不是活动的 rs256。
  • 客户
    • 客户端的访问令牌签名算法和ID令牌签名算法设置为RS256
    • 客户是公开的
    • 有效的重定向 URI 包含应用程序服务器当前运行的域(即 localhost 但我的计算机有域名)
    • Web origins 设置为“+”(据我所知,它从有效的 red.uris 复制条目)

要求:

  • 应用客户端和应用服务器请求中的 Origin、Referer 和 Content-Type 标头匹配
  • 浏览器和邮递员都按预期作为客户端工作
  • 应用服务器是php,我使用curl发出post请求(客户端也发出post请求)
  • 客户端和应用服务器都在本地机器上运行

谷歌似乎没有返回与我的问题相关的结果。在修改任何设置后重新启动 keycloak 服务器似乎也没有带来任何结果,所以我假设我所做的任何更改都会自动使用。

4

0 回答 0