gpt4 book ai didi

single-sign-on - keycloak - 基于用户名(电子邮件地址)的领域解析

转载 作者:行者123 更新时间:2023-12-03 14:44:35 25 4
gpt4 key购买 nike

我正在处理一个 Multi-Tenancy 项目,其中用户名实际上是他们的电子邮件地址,电子邮件的域用作租户标识符。

现在在 keycloak 中,每个租户都有不同的领域,但我希望为所有租户和实际领域拥有一个登录页面,该页面将进行身份验证以通过用户名(电子邮件地址)以某种方式解析。

我该怎么做?

我在邮件列表(我现在找不到……)上找到了一个讨论相同问题的线程。这类似于 - 创建一个可以“代理”其他领域的主要领域,但我不太确定如何做到这一点。

最佳答案

我认为 Michał Łazowik 的答案是正确的,但是要使单点登录起作用,它需要稍微扩展一下。
请记住,因为 KEYCLOAK-4593如果我们有 > 100 个领域,我们可能还需要有多个 Keycloak 服务器。
我们需要:

  • 专门用于此目的的单独 HTTP 服务器,auth-redirector.example.com .
  • 从用户名(电子邮件地址)确定 Keycloak 服务器和领域的算法。

  • 以下是整个 OAuth2 授权代码流程:
    应用程序发现用户想要登录。在多个领域之前,领域的名称将是一个常量,因此应用程序将重定向到: https://keycloak.example.com/auth/realms/realname/protocol/openid-connect/auth?$get_params相反,它重定向到 https://auth-redirector.example.com/?$get_paramsauth-redirector 确定它本身是否具有此 session 的有效访问 token ,可能必须首先从发布它的 Keycloak 服务器刷新访问 token (用户可能已注销并尝试以不同的用户身份登录)来自不同的领域)。
    如果它有一个有效的访问 token ,我们可以根据访问 token 中的用户名或电子邮件地址确定 Keycloak 服务器和领域,并重定向到: https://$keycloak_server/auth/$realm/realname/protocol/openid-connect/auth?$get_params从这里开始,OAuth2 授权代码流程照常进行。
    否则,如果它没有有效的访问 token ,则 auth-redirector 将存储原始应用程序的 $get_params作为 session 数据。它向用户呈现一个表单,要求输入用户名。当用户提交时,我们可以确定要使用的 Keycloak 服务器和领域,然后 auth-redirector 本身使用自己的 $get_params 登录到 Keycloak 服务器。 .一旦 auth-redirector 收到回调,它就会从 Keycloak 服务器检索访问+刷新 token 并将它们存储在 session 数据中。然后,最后,它重定向回与调用者原始 $get_params 相同的 key 斗篷服务器和领域。 (来自 session 数据)。 OAuth2 授权代码流程照常进行。
    这绝对是一个黑客!但我认为它可以工作。如果时间允许,我很想有一天尝试一下。
    其他 OAuth2 流程需要其他黑客/解决方案......

    关于single-sign-on - keycloak - 基于用户名(电子邮件地址)的领域解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44583833/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com