首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否可以基于Keycloak SPI创建一个Keycloak侦听器,以便将配置从一个领域复制到新创建的领域?

是的,可以基于Keycloak SPI创建一个Keycloak侦听器,以便将配置从一个领域复制到新创建的领域。

Keycloak是一个开源的身份和访问管理解决方案,它提供了单点登录、多因素认证、授权和用户管理等功能。Keycloak使用Java编写,并且可以通过SPI(Service Provider Interface)扩展其功能。

要创建一个Keycloak侦听器,您可以实现Keycloak的EventListener接口,并重写其中的方法来处理事件。在这种情况下,您可以监听领域创建事件,并在新创建的领域中复制配置。

在实现侦听器时,您可以使用Keycloak的Admin REST API来获取和设置配置。通过API,您可以获取源领域的配置,并将其复制到新创建的领域中。

以下是一个示例代码,展示了如何创建一个Keycloak侦听器来复制配置:

代码语言:txt
复制
import org.keycloak.events.EventListenerProvider;
import org.keycloak.events.EventListenerProviderFactory;
import org.keycloak.events.admin.AdminEvent;
import org.keycloak.events.admin.AdminEventBuilder;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;

public class ConfigCopyEventListenerProvider implements EventListenerProvider {

    private final KeycloakSession session;

    public ConfigCopyEventListenerProvider(KeycloakSession session) {
        this.session = session;
    }

    @Override
    public void onEvent(Event event) {
        // 处理事件
        if (event.getType().equals(EventType.CREATE)) {
            // 获取新创建的领域
            RealmModel newRealm = session.realms().getRealm(event.getRealmId());

            // 获取源领域的配置
            RealmModel sourceRealm = session.realms().getRealm("source_realm");
            String sourceConfig = sourceRealm.getAttributes().get("config");

            // 将源领域的配置复制到新创建的领域
            newRealm.getAttributes().put("config", sourceConfig);

            // 更新新创建的领域
            session.realms().updateRealm(newRealm);
        }
    }

    @Override
    public void onEvent(AdminEvent event, boolean includeRepresentation) {
        // 处理管理员事件
    }

    @Override
    public void close() {
        // 关闭资源
    }
}

public class ConfigCopyEventListenerProviderFactory implements EventListenerProviderFactory {

    @Override
    public EventListenerProvider create(KeycloakSession session) {
        return new ConfigCopyEventListenerProvider(session);
    }

    @Override
    public void init(Config.Scope config) {
        // 初始化配置
    }

    @Override
    public void postInit(KeycloakSessionFactory factory) {
        // 后期初始化
    }

    @Override
    public void close() {
        // 关闭资源
    }

    @Override
    public String getId() {
        return "config-copy-listener";
    }
}

要将此侦听器添加到Keycloak中,您需要创建一个SPI插件。在Keycloak的模块目录下创建一个名为META-INF/services/org.keycloak.events.EventListenerProviderFactory的文件,并将ConfigCopyEventListenerProviderFactory的完全限定名添加到文件中。

然后,将编译后的插件(JAR文件)放置在Keycloak的standalone/deployments目录下,并启动Keycloak服务器。Keycloak将自动加载并注册您的侦听器。

这样,当创建新的领域时,您的侦听器将被触发,并复制配置到新创建的领域中。

请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行修改和扩展。此外,您还可以使用Keycloak的其他SPI扩展其功能,例如实现自定义的身份验证提供者、用户存储提供者等。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)、腾讯云容器服务(TKE)等。您可以访问腾讯云官方网站了解更多产品信息和文档。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

开源身份认证神器:KeyCloak!

下面我们来为该服务整合Keycloak,并逐步实现基于Keycloak的单点认证及授权。 准备工作 创建Realm 首先,我们需要创建一个Realm。...为用户设置登录密码 我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐 为Spring Boot微服务整合Keycloak 话不多说,上代码—— 基于...这样登录页面就会变成类似下图: 主题定制 Keycloak自带的届满稍微有那么一点丑陋,但Keycloak允许我们自定义主题—— 开发好主题后,将主题目录复制到$KEYCLOAK_PATH/themes...Z表示受保护的资源,例如“/accounts”。 Keycloak提供了一个丰富的平台,用于构建从简单到非常复杂、基于规则的动态权限等一系列permission strategy。...Keycloak提供了一个SPI(Service Provider Interface:服务提供者接口),您可以使用它来插入自己的策Service Provider实现。

6.5K20

吊炸天的可视化安全框架,轻松搭建自己的认证授权平台!

安装 使用Docker搭建Keycloak服务非常简单,两个命令就完事了,我们将采用此种方式。...在我们开始使用Keycloak保护应用安全之前,我们得先创建一个领域(realm),领域相当于租户的概念,不同租户之间数据相互隔离,这里我们创建一个macrozheng的领域; ?...接下来我们可以在macrozheng领域中去创建用户,创建一个macro用户; ? 之后我们编辑用户的信息,在凭据下设置密码; ?...密码模式体验 首先需要在Keycloak中创建客户端mall-tiny-keycloak; ? 然后创建一个角色mall-tiny; ? 然后将角色分配给macro用户; ?...由于我们的SpringBoot应用将运行在localhost:8088上面,我们需要对Keycloak的客户端的有效的重定向URI进行配置; ?

2.6K21
  • OAuth2 服务器Keycloak中的Realm

    所以今天我要弄明白的是Keycloak中的Realm。 Realm Realm翻译成中文为领域。用来逻辑隔离一些特定空间,有点多租户的感觉,不同的Realm之间互相隔离,有各自的特色配置,互不影响。...我们可以这么定义一个名称为felord.cn的Realm,来管理该应用的角色、资源、和客户端,客户端开发可以专注于业务。...整个Keycloak就像一个开放平台一样,集中式管理Realm的生命周期,这些Realm之间可以在OIDC协议下互联互通。...而且你会发现Master Realm创建的领域实际上是Master Realm的一个客户端,甚至它自己都是自己的客户端,而且名称遵循-realm。...创建成功会有一些选项可供配置,但是一般情况下使用默认配置即可。 设置Realm管理账户 为前面我初始化的Realmfelord.cn创建独立的管理员账户有两种方式。

    1.8K60

    开源认证和访问控制的利器keycloak使用简介

    简介 keycloak是一个开源的进行身份认证和访问控制的软件。是由Red Hat基金会开发的,我们可以使用keycloak方便的向应用程序和安全服务添加身份认证,非常的方便。...创建realm和普通用户 realm翻译成中文就是域,我们可以将它看做是一个隔离的空间,在realm中我们可以创建users和applications。...点击add realm按钮,我们进入add realm界面,输入realm的名字,就可以创建realm了。 ? 上面的例子中,我们创建了一个叫做WildFly的realm。...选择新创建user的credentials页面,输入要创建的密码,点击set password,那么新创建用户的密码则创建完毕。 ?...我们使用之前创建的用户名和密码登录看看。 ? 登录成功。 总结 上面的例子我们演示了如何配置keycloak,并且创建一个realm供第三方程序使用。还举了一个无侵入的例子来和keycloak对接。

    6.7K22

    通过管理API管理OAuth2 认证授权服务器Keycloak

    它是 JAX-RS(Java API for RESTful Web Services) 的一个实现,它的一些亮点: 不需要配置文件,基于注解和Java POJO就可以实现RESTful客户端。...根据我们的配置声明一个Keyclock实例: Keycloak adminCli = KeycloakBuilder.builder() // 服务器地址...为了在felord.cn这个Realm创建用户,你可以给一个Master Realm的用户赋予一个创建felord.cn用户的角色manager-users: 创建一个管理给特定的Realm用户 ❝红框中还有很多角色需要你去了解...按照下面的配置你可以开启realm-management的服务账户功能。...总结 创建用户和前面两种方法相同,你可以创建一个用户试试,还有其它的API都可以用这种方式实现。

    2.9K60

    aspnetcore 应用 接入Keycloak快速上手指南

    本文将简明的介绍Keycloak的安装、使用,并给出aspnetcore 应用如何快速接入Keycloak的示例。...保护的应用和服务 Realms: 领域,领域管理着一批用户、证书、角色、组等,一个用户只能属于并且能登陆到一个域,域之间是互相独立隔离的, 一个域只能管理它下面所属的用户 Keycloak服务安装及配置...创建Realm 创建一个新的realm: demo,后续所有的客户端、用户、角色等都在此realm中创建 ? ? ?...创建客户端 创建前端应用客户端 创建一个新的客户端:KeycloakAuthaspnet,Access Type选择confidential ?...创建用户和角色 创建角色 创建2个角色:admin、user ? 还可以创建全局的角色 ? 创建用户 创建1个用户:geffzhang ?

    2.5K30

    Keycloak Spring Security适配器的常用配置

    在上一篇Keycloak系列文章中,我们把Keycloak同Spring Security成功适配,其中用了一个keycloak.json的配置。...realm Keycloak领域名称,这是一个必须项。 resource 应用的client_id,Keycloak服务器上注册的每个客户端都有一个独一无二的标识。这是一个必须项。...use-resource-role-mappings 如果设置为true, Keycloak Adapter将检查令牌携带的用户角色是否跟资源一致;否则会去查询realm中用户的角色。...总结 上面列举了大部分我们常用的属性,后面的属性和定制Keycloak服务器相关暂时不介绍了。Keycloak剩下的配置项可以到Keycloak Java适配器配置项[1]查看。...下一篇我将对Keycloak Spring Security认证授权的流程作出一个分析。

    2.6K51

    (译)Kubernetes 单点登录详解

    我们也会配置基于群组的访问控制,所以我们可以创建一个 KubernetesAdminstrators 组,从而让组中所有用户具备 cluster-admin 权限。...在更复杂的环境中,还可以在 Keycloak 中创建一个 customers realm,把认证和鉴权工作都交给 Keycloak。...工作原理 Nginx 支持基于子请求结果的认证:当受保护页面接到请求时,Nginx 可以向一个额外的 URL 发送一个子请求,如果该 URL 返回了 2xx 的响应码,就允许接收这个请求,如果返回了 401...为应用加入认证 现在我们已经完成了 OAuth2 Proxy 的配置,接下来就可以安装一个示例应用,并在 Ingress 定义中加入注解,将应用置于认证保护之后。...登录到 Harbor 之后,Harbor 会自动根据 Keycloak 的配置创建一个用户名。

    6K50

    深度解读-如何用keycloak管理external auth

    ,这里用csrftoken,可以在auth callback中校验state参数是否合法 .authorize_url(CsrfToken::new_random) // auth请求需要的权限...等效的页面配置可以后边参考之前的链接 How to setup Sign in with Google using Keycloak[6] # 这里使用默认的admin-cli配置keycloak #...也可生成一个专门的client,用clientId+clientSecret的方式 provider "keycloak" { client_id = "admin-cli" url...创建一个realm(领域),并启用, 类似命名空间,代表一个安全的独立区域 resource "keycloak_realm" "realm_axum_koans" { realm = "axum-koans...的代理设置就完成了,不信我们继续往下看怎么代码接入 keycloak auth 接入 上边keycloak配置了realm,后边授权和token获取都会和这个realm下的issueUrl打交道,这里

    70130

    这个安全平台结合Spring Security逆天了,我准备研究一下

    最近想要打通几个应用程序的用户关系,搞一个集中式的用户管理系统来统一管理应用的用户体系。经过一番调研选中了红帽开源的Keycloak,这是一款非常强大的统一认证授权管理平台。...并且Keycloak为登录、注册、用户管理提供了可视化管理界面,你可以借助于该界面来配置符合你需要的安全策略和进行用户管理。...而且还可以 登录界面 可配置的GUI管理 功能强大 Keycloak实现了业内常见的认证授权协议和通用的安全技术,主要有: 浏览器应用程序的单点登录(SSO)。 OIDC认证授权。...最后 胖哥对这个东西关注了很久却没有下手,第一是因为它确实有挑战性,第二没有实际的开发场景,现在机会来了,今天对这个框架进行一个简单的介绍,让不了解它的同学先简单了解一下。...在目前新的Spring认证服务器还没有达到生产可用时是一个不错的选择。

    1.7K10

    Spring Boot+Keycloak从零到壹

    我们将被重定向到http://localhost:8180/auth 去创建一个初始的admin用户: 让我们创建一个名为“initial1”的用户,密码“zaq1!QAZ“。...创建一个客户端 现在我们将导航到Clients页面。正如我们在下图中所看到的,Keycloak已经整合了已经内置的客户端: 我们需要在应用程序中添加一个客户端,所以我们点击“Create”。...配置完成后,将被重定向到端口8081: 3.4. 创建一个角色和用户 Keycloak使用Role-Based Access。因此,每个用户都必须有一个角色。...因此,让我们去“Users”页面新增一个: 我们创建用户“user1”: 如果用户被创建,用户信息将展示在这里: 我们现在可以进入“Credentials”选项卡,并将把密码设置为“xsw2...Keycloak Spring Boot 适配器是基于 Spring Boot的自动配置,因此我们所需要做的就是将Keycloak Spring Boot starter添加到我们的项目中。

    4.3K20

    基于Keycloak的Grafana SSO身份认证过程剖析

    结合我们项目内的过往使用经验,本篇文章,将介绍: 1、一键式Keycloak安装; 2、配置Grafana,使接入Keycloak进行单点登录; 3、分析Grafana SSO登录过程...,其实都是Keycloak(或者其他IAM)里的一个Client,所以需要去Keycloak创建出这个client,并且拿到对应的信息; 2.2 Keycloak配置 访问 上述步骤安装后的Keycloak.../#role-mapping 对应的keycloak里grafana client需要配置在userinfo时候,返回用户的role属性 image.png 用户的属性信息里role是哪里来的呢,其实可以配置给用户登录的时使用的...Grafana SSO登录过程分析 按照上述的步骤,你的grafana配置好后,已经能够使用keycloak进行登录了(需要在Keycloak创建用户): 当然你需要在Keycloak的Test域下创建一个用户...的认证登录界面,用户在Keycloak登录成功后,keycloak会生成一个针对该用户的code(这个code只能使用一次,用于换取token),并返回给浏览器,并指定下一跳的url.

    7.4K111

    Keycloak vs MaxKey,开源单点登录框架如何选择?

    一个基于 xml 的在不同安全域间进行交换认证和授权数据的协议,是很经典的一个授权协议。因此在大部分的用户系统中,都会有 SAML 协议的支持。不过国内使用的还是偏少,OIDC 的出现抢了它的风头。...开发采用 CAS Overlay 的方式,就是说在第一次部署后,将某个资源文件或 class 文件复制到你的src/main目录下进行二次开发,在 package 的时候会自动将你的文件替换到原有项目中去...这是一个支持比较完整的用户认证系统,由 Java 开发,基于 jboss。...相对于 CAS,Keycloak 没有那么多的协议的支持,认证协议支持 OIDC 和 SAML,将 LDAP 和 Kerberos 作为用户存储协议集成。...扩展方式是基于https://www.keycloak.org/docs/latest/server_development/index.html,将要自定义的功能定义为一个 SPI,部署到 deployments

    5.4K51

    在wildfly中使用SAML协议连接keycloak

    OpenID Connect和SAML OpenID Connect简称OIDC,是一个基于OAuth2协议的认证框架。为什么要基于OAuth2框架呢?...所以用户需要在keycloak中进行登录,登录成功之后keycloak会返回应用程序一个XML文件,这个文件里面包含了一个叫做SAML assertion的东西,里面存的是用户的信息,同时这个XML文件中还包含了用户的权限信息...输入我们创建的admin用户名和密码,就可以登录到keycloak的admin界面。 这里需要为SAML应用创建一个新的client。...在index页面会去检测用户是否登录。如果未登录,可以点击登录按钮,跳转到登录页面。...输入用户名和密码进行校验之后,keycloak会返回一个SAMLResponse给应用程序,应用程序通过assertion consumer service将会处理这个请求,创建相关的安全上下文,并将user

    2.2K31

    单点登录,不要老盯着cas-server了,你还可以选择keycloak

    这也是可以理解的,毕竟认证是个又脏又累的活,封装好它很不容易。 这就造成了,虽然keycloak提供了一个简单易用的控制后台,如果不了解一些验证的概念,用来来也并不顺手。...创建Realms 要想使用Keycloak,需要先生成一个Realm。Realm是领域的意思,在它其中,所有的用户和权限都是独立的。...创建realm很简单,只需要提供一个名字就可以了。 ? 但不要高兴的太早。作为一个全局配置,它的选项肯定是非常多的。不过这都属于自定义性的增强使用,我们这里不讨论它。 ? 2....创建权限 接下来,将创建两个权限组。权限也比较好理解,就是一个字符串而已。我们创建ROLE_ADMIN和ROLE_USER两个权限。 ? 3. 创建用户 该到了创建用户的时间了。...如果你不需要强制用户设置一遍密码,就可以把它删掉。 我们当然是把它删掉。 ? 4. 创建client 要想在xjjdog这个领域里进行权限认证,还需要拿到一个clientid,用来标示自己的身份。

    2.1K20

    Keycloak单点登录平台|技术雷达

    Keycloak首次在ThoughtWorks技术雷达第16期中以“评估”的状态出现。 技术雷达15期正式提出“安全是每一个人的问题”,同时也对Docker和微服务进行了强调。...的默认方式(当选择SAML协议时),如果忽视传输内容(SAML基于xml传输,OpenID普通文本)的不同,这种工作流程与OpenID的流程非常相似,可以用它来大致了解登录流程。...基于时间的一次性密码算法、复杂的密码策略、第三方登录系统接入(Github,Google,SAML IdP,OpenID Connect OP),将这些功能全部实现,那么它也就成了Keycloak。...希望在不久后,会有一个更轻量级的,对自动化部署和配置提供更好支持的替代方案出现。” 在“评估”两期后,即不再出现。...---- 总结 还是很看好Keycloak发展的,它是JBoss/Redhat下的一个项目,所以有较为坚实的技术支撑,而且,JBoss/Redhat也使用了Keycloak作为它的SSO系统。

    5.2K30

    基于 LDAP 的统一认证服务 Keycloak

    为了验证一下是否可以采用 LDAP 作为基础存储来构建统一认证服务,这里选择了比较知名的由 RedHat 赞助开发的基于 OpenID Connect 协议的开源软件 Keycloak。...另外在填写完配置后可以用右侧的测试连接和测试验证按钮来测试该配置是否可行。如下图所示,顶部出成功验证提示。点击保存完成 LDAP 配置。   ...LDAP 直接集成应用   除了上面介绍了搭建基于 LDAP 的统一认证服务(例如 Keycloak)可以为其他应用提供登录验证服务,还可以直接将应用与 LDAP 服务集成。...这里可能会有一个疑问:既然 LDAP 自身就可以与应用集成,为什么还要费这么大劲去搭建基于 LDAP 的统一认证服务呢?其实这里需要考虑“ LDAP 暴露在公网好还是统一认证服务暴露在公网好?”...有了统一认证服务就可以很好的将 LDAP 安安全全地保护在内网中,而统一认证服务则作为一个网页应用与其他网页应用或客户端应用进行交互。这样的方式或许显得更加优雅、放心。

    10.7K71
    领券