【发布时间】:2022-11-11 00:07:03
【问题描述】:
我一直在努力实现注销到我的 Ruby on Rails 应用程序。我在端口 8081 上本地运行 Keycloak v19.0.2。因此领域test-realm 的注销 url 是 http://localhost:8081/realms/test-realm/protocol/openid-connect/logout。
根据文档here。我应该将用户重定向到这个 url 并提供查询参数。但是我想在没有提示的情况下实现注销并使用post_logout_redirect_uri 将用户重定向回应用程序。为此,我需要提供id_token_hint 参数,但是这个令牌是什么以及如何获取它?我的 Keycloak 身份验证只返回访问令牌和刷新令牌,而不是 id 令牌。我曾尝试在此参数上同时使用两者,但它不起作用。而我在网上搜索的,似乎 ID 令牌与访问令牌不同。
我已经使用omniauth 和omniauth-keycloak gems 实现了对我的Rails 应用程序的身份验证。例如,我按照以下方式定义 keycloak_openid 提供者
provider(:keycloak_openid,
Secrets.keycloak_client_id,
Secrets.keycloak_client_secret,
name: "keycloak",
client_options: {
base_url: "", site: "http://localhost:8081", realm: "test-realm"
})
我已经在我的路由中定义了一个回调,它将为我正确调用,在那里我可以获得访问令牌和刷新令牌。
我错过了什么?
【问题讨论】:
标签: ruby-on-rails ruby keycloak omniauth logout