【发布时间】:2020-03-09 06:34:13
【问题描述】:
我将 KeyCloak 与 OpenID Connect 一起使用。
我在与 KeyCloak 相同的域上有一个应用程序。此应用程序有一个端点,该端点将授权代码作为参数,并在响应中设置“KEYCLOAK_IDENTITY”cookie 以启用 SSO。
它有效,但这样做安全吗?
EDIT:我的问题是关于 cookie 的。我解释“为什么”只是为了提供一些背景信息。
编辑 2:对于想要使用此解决方案的人,我真的很关心 keycloak 社区......即使有 100 的赏金,我的问题也没有答案。
我为什么要这样做:
我需要在外部网站(使用它自己的身份验证提供程序,我们称之为“站点 A”)和 Keycloak 处理的应用程序世界(我们将其中一个称为“站点 K”)之间设置 SSO。
作为站点 A 的经过身份验证的用户,如果我想在不登录的情况下导航到站点 K(即使用 SSO),我需要在 KeyCloak 上登录(授权代码流将完成它的工作)。
但是,为了登录 KeyCloak,我需要:
- 获取授权码
- 将此代码交换为将添加到 KeyCloak 域的 cookie (KEYCLOAK_IDENTITY) 的令牌
1. 使用 OIDC 很棘手,但这是可能的。
2. 使用 OIDC 是不可能的:KeyCloak 中没有端点可以获取授权码并设置 cookie 而无需在正文中返回令牌。
所以,我的解决方案是在与 KeyCloak 相同的域上添加一个网关,该网关将从 KeyCloak 获取令牌并将其添加到 KEYCLOAK_IDENTITY cookie...这很棘手,但确实有效。我的问题是:它安全吗?
如果不清楚:请随时提问!
【问题讨论】:
-
为什么不直接将站点 A 与站点 K 的 Keycloak 集成?站点 A 是否有自己的用户身份数据库?
-
确实有自己的数据库
标签: oauth oauth-2.0 single-sign-on openid-connect keycloak