oauth - 我可以自己设置 KEYCLOAK_IDENTITY cookie吗

标签 oauth oauth-2.0 single-sign-on openid-connect keycloak

我将 KeyCloak 与 OpenID Connect 一起使用。
我在 KeyCloak 的同一个域上有一个应用程序。此应用程序有一个端点,它将授权代码作为参数,并在响应中设置 'KEYCLOAK_IDENTITY' cookie 以启用 SSO。
它有效,但这样做安全吗?
编辑 : 我的问题是关于 cookies 的。我解释“为什么”只是为了提供一些上下文。
编辑 2 :对于想要使用此解决方案的人,我真的很关心 keycloak 社区......即使有 100 的赏金,也没有回答我的问题。
我为什么要这样做:
我需要在外部网站(使用它自己的身份验证提供商,我们称之为“站点 A”)和由 Keycloak 处理的应用程序世界(我们称之为“站点 K”)之间设置 SSO。
作为站点 A 的经过身份验证的用户,如果我想在不登录的情况下导航到站点 K(即使用 SSO),我需要登录 KeyCloak(授权代码流将完成它的工作)。
但是,为了登录 KeyCloak,我需要:

  • 获取授权码
  • 将此代码交换为将添加到 KeyCloak 域的 cookie (KEYCLOAK_IDENTITY)
  • 的 token

    1. OIDC 很棘手,但这是可能的。
    2. 使用 OIDC 是不可能的:KeyCloak 中没有端点可以获取授权码并设置 cookie,而无需在正文中返回 token 。
    所以,我的解决方案是添加一个网关,在与 KeyCloak 相同的域上,它将从 KeyCloak 获取 token 并将其添加到 KEYCLOAK_IDENTITY cookie ......这很棘手,但它确实有效。我的问题是:它安全吗?
    如果不清楚:请随时提问!

    最佳答案

    如果它有自己的身份数据库,您应该考虑通过 User Storage Provider implementation 将此数据库集成到站点 K 的 keycloak 中。 (USP)。这样,您的两个站点都将使用单个 Keycloak 服务器进行身份验证。

    如果来自站点 A 的身份 DB 的用户帐户在站点 B 的 Keycloak 中重复,则可能会出现问题,如果是这样,您应该考虑合并(或者例如更喜欢来自 Keycloak 的现有用户 - 这是来自 Keycloak 身份 DB 的用户与用户从用户存储提供程序实现中提取)。您还可以为 USP 创建单独的领域,并为您的应用程序使用 Multi-Tenancy 。

    关于oauth - 我可以自己设置 KEYCLOAK_IDENTITY cookie吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837499/

    相关文章:

    c# - 为多个设备创建相同的访问 token

    Azure AD list - 可选声明

    javascript - 从node.js googledrive api返回结果

    java - SSO sp 启动流程中 ?wa=wsignoutcleanup1.0 的意义是什么

    java - Tomcat 容器管理的 SSO Valve 和 Spring Security

    node.js - 如果我使用 HTTPS,是否需要 OAuth?

    android - 如何在 Android 设备上使用三星 OAuth 登录?

    javascript - 如何在 Deno js 中使用 Google OAuth?

    rest - 移动应用程序 + REST 后端中的 OpenID Connect 身份验证流程(使用 KeyCloak)

    session 未进入 session Tomcat 的单点登录