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

Keycloak java api获取给定客户端的服务帐户用户

Keycloak是一个开源的身份和访问管理解决方案,它提供了一套用于保护应用程序和服务的身份验证和授权功能。Keycloak提供了Java API,可以使用该API获取给定客户端的服务账户用户。

服务账户用户是Keycloak中的一种特殊类型用户,用于代表客户端应用程序或服务进行身份验证和授权。通过服务账户用户,客户端应用程序可以使用Keycloak提供的API进行认证和授权操作。

要使用Keycloak Java API获取给定客户端的服务账户用户,可以按照以下步骤进行操作:

  1. 首先,确保已经在Java项目中引入了Keycloak的Java客户端库。可以通过Maven或Gradle等构建工具添加相关依赖。
  2. 在代码中创建Keycloak的配置对象,并设置相应的参数,如Keycloak服务器的URL、Realm名称、客户端ID和客户端密钥等。
  3. 使用配置对象创建Keycloak的实例,并通过实例获取到Keycloak的Realm对象。
  4. 通过Realm对象获取到指定客户端的ClientRepresentation对象,该对象包含了客户端的详细信息。
  5. 通过ClientRepresentation对象获取到服务账户用户的ID。

下面是一个示例代码,演示了如何使用Keycloak Java API获取给定客户端的服务账户用户:

代码语言:txt
复制
import org.keycloak.admin.client.Keycloak;
import org.keycloak.admin.client.KeycloakBuilder;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.UserRepresentation;

public class KeycloakExample {
    public static void main(String[] args) {
        // 创建Keycloak的配置对象
        String serverUrl = "http://localhost:8080/auth";
        String realm = "myrealm";
        String clientId = "myclient";
        String clientSecret = "myclientsecret";

        Keycloak keycloak = KeycloakBuilder.builder()
                .serverUrl(serverUrl)
                .realm(realm)
                .clientId(clientId)
                .clientSecret(clientSecret)
                .build();

        // 获取Keycloak的Realm对象
        org.keycloak.admin.client.resource.RealmResource realmResource = keycloak.realm(realm);

        // 获取指定客户端的ClientRepresentation对象
        ClientRepresentation client = realmResource.clients().findByClientId(clientId).get(0);

        // 获取服务账户用户的ID
        String serviceAccountUserId = client.getServiceAccountUserId();

        // 根据服务账户用户的ID获取UserRepresentation对象
        UserRepresentation serviceAccountUser = realmResource.users().get(serviceAccountUserId).toRepresentation();

        // 打印服务账户用户的用户名
        System.out.println("Service Account User: " + serviceAccountUser.getUsername());
    }
}

在上述示例代码中,我们通过Keycloak的Java API获取到了给定客户端的服务账户用户,并打印了该用户的用户名。

对于Keycloak的更多详细信息和使用方法,可以参考腾讯云的Keycloak产品介绍页面:Keycloak产品介绍

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

相关·内容

Java服务获取客户端真实IP

在进行一些小游戏开发时,我们比较关注一个功能便是分享。我们希望能根据各个城市或者地区,能有不同分享文案,辨识地区功能如果由服务器来完成的话,我们就需要知道客户端真实IP。...今天我们就来看看服务器是如何获取客户端真实IP。 nginx配置 首先,一个请求肯定是可以分为请求头和请求体,而我们客户端IP地址信息一般都是存储在请求头里。...web服务器之间增加了中间层,因此web服务器无法直接拿到客户端ip,通过$remote_addr变量拿到将是反向代理服务ip地址。...这句话意思是说,当你使用了nginx反向服务器后,在web端使用 request.getRemoteAddr()(本质上就是获取 $remote_addr),取得是nginx地址,即 $remote_addr...也就是说在默认情况下我们使用 request.getAttribute("X-Forwarded-For")获取不到用户ip,如果我们想要通过这个变量获得用户ip,我们需要自己在nginx添加配置:

4.7K10

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

Keycloak Admin Client正是对Keycloak Admin REST APIJava HTTP客户端封装。...它是 JAX-RS(Java API for RESTful Web Services) 一个实现,它一些亮点: 不需要配置文件,基于注解和Java POJO就可以实现RESTful客户端。...根据Token中携带权限信息来获取对应API访问权限。所以我们在使用Keycloak Admin Client时要特别注意当前你使用客户端是否有权限访问。...Setting选项下打开Direct Access Grants Enabled,这意味着admin-cli客户端能够访问用户用户名和密码,并以此从Keycloak服务获取访问令牌,继而能够进行进一步访问授权操作...开启服务账户功能 这样我们可以直接向Keycloak服务获取realm-management访问凭据,因为realm-management有全部管理功能,所以我们可以以客户端名义而非管理用户名义创建新用户

2.7K60

Keycloak Spring Security适配器常用配置

realm Keycloak领域名称,这是一个必须项。 resource 应用client_id,Keycloak服务器上注册每个客户端都有一个独一无二标识。这是一个必须项。...use-resource-role-mappings 如果设置为true, Keycloak Adapter将检查令牌携带用户角色是否跟资源一致;否则会去查询realm中用户角色。...autodetect-bearer-only 如果你应用不仅仅是Web应用而且还提供API服务(现在通常是Restful Service),开启了这一配置后Keycloak服务器会通过请求标头相对“智能...expose-token JavaScript CORS 请求通过根路径下/k_query_bearer_token用来从服务获取令牌,好像是nodejs相关后端应用使用东西,我折腾了半天没有调用成功...总结 上面列举了大部分我们常用属性,后面的属性和定制Keycloak服务器相关暂时不介绍了。Keycloak剩下配置项可以到Keycloak Java适配器配置项[1]查看。

2.4K51

在 Kubernetes 中使用 Keycloak OIDC Provider 对用户进行身份验证

7.API Server 确认用户是否有操作资源权限。 8.鉴权成功之后,API 服务器向 kubectl 返回响应。 9.kubectl 向用户返回结果。...客户端(clients):需要接入 Keycloak 实现用户认证应用和服务用户(users):用户是能够登录到应用系统实体,拥有相关属性,例如电子邮件、用户名、地址、电话号码和生日等等。...6.3 创建 Client Client (客户端)是请求 Keycloak用户进行身份验证客户端,在本示例场景中,API Server 相当于一个客户端,负责向 Keycloak 发起身份认证请求...--oidc-client-id:客户端 ID。 --oidc-username:从 JWT Claim 中获取用户字段。...password 表示以密码方式获取令牌。 client_id:客户端 ID。 client_secret:客户端密钥。 username:用户名。 password:密码。

6K20

Spring Boot+Keycloak从零到壹

Keycloak是什么? Keycloak是一种面向现代应用程序和服务开源IAM(身份识别与访问管理)解决方案。...Keycloak提供了单点登录(SSO)、Identity Brokering和社交账号登录、User Federation、客户端适配器、管理控制台和帐户管理控制台等特性。...创建一个客户端 现在我们将导航到Clients页面。正如我们在下图中所看到Keycloak已经整合了已经内置客户端: 我们需要在应用程序中添加一个客户端,所以我们点击“Create”。...值为验证服务URL,并且配置了在Keycloak管理控制台中创建realm。...控制器 为了获取到当前用户用户名,我们需要在控制器注入Principal参数,修改后代码如下所示: @GetMapping(path = "/customers") public String customers

3.6K20

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

创建完用户之后,就可以登录了,用户和管理员登录地址并不相同,我们可以在客户端页面中查看到地址; ?...(A)客户端用户导向认证服务器; (B)用户在认证服务器进行登录并授权; (C)认证服务器返回授权码给客户端; (D)客户端通过授权码和跳转地址向认证服务获取访问令牌; (E)认证服务器发放访问令牌...(A)客户端用户获取用户名和密码; (B)客户端通过用户用户名和密码访问认证服务器; (C)认证服务器返回访问令牌(有需要带上刷新令牌)。...一切准备就绪,在Postman中使用Oauth2方式调用接口就可以获取到Token了,获取token地址:http://192.168.7.142:8080/auth/realms/macrozheng...登录成功后,即可访问被保护Swagger页面和API接口,一个很标准Oauth2授权码模式,流程参考授权码模式说明即可。 ?

2.5K21

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

简单来说,以google授权为例,一般就是通过用户授权页面登录google账号,再跳转用code换取到相应权限token,就可以代表用户去发起一些google api请求。...+keycloak,但从服务启动到keycloak服务及相关配置,都用docker-compose+terraform+shell 脚本化管理,可 100%本地复刻,欢迎本地尝试。...这里auth url默认跳转keycloak登录页面,然后google idp是作为一种登录选项让用户选择。但如果就打算让用户直接google登录,可以跳过keycloak登录页。...有些场景是客户端需要自己通过google refresh token换取access token来发起请求,难道这个时候客户端先去拿个keycloak access token么。。。?...题外话:当然直接给用户这么获取refresh token能力并不安全,还需要考虑对broker read token接口访问约束等来更好保证安全token换取。

45130

(译)Kubernetes 单点登录详解

这里可以创建用户和即将使用 Keycloak 进行单点登录应用程序。 注意登录管理控制台和服务用户登录是各自独立。 在 Keycloak 中我们可以创建多个 realms,代表不同认证服务。...这个工具提供一个代理服务器来管理 OIDC 认证,用户连接到这个代理服务器时,服务会给通过认证用户提供所需权限。这种方法是通用,也就是说我们可以用同样方法来管理所有的托管和非托管集群。...缺省情况下,被认证应用是不能访问这个 Token ,要获取认证用户信息,或者该用户所属群组,要获取这些信息,需要设置 nginx.ingress.kubernetes.io/auth-response-headers...这样后端应用就能够获取 Header,并解码 JWT 来获取用户相关信息。 在这个简单例子里,会把这些信息输出到日志里(不安全),并把信息响应给用户。...而密码不应该使用 Keycloak 密码,而是从 Harbor 获取,在用户页面右上角选择 User Profile,在其中拷贝 CLI 密码。

5.8K50

Spring Security 中使用Keycloak作为认证授权服务

Keycloak对流行Java应用提供了适配器。在系列文章上一篇我们演示了针对Spring Boot安全保护,用就是适配器一种。...Keycloak支持每个Java适配器都可以通过一个简单JSON文件进行配置,我们缺失就是这个文件。.../(.*)$" : "/api/$1"    } } 上面包含客户端配置属性都可以在Keycloak控制台进行配置,见下图: 配置Keycloak客户端属性 也就是说我们需要json文件和图中配置项是对应...applicaiton.yaml: keycloak: # 声明客户端所在realm   realm: felord.cn # keycloak授权服务地址   auth-server-url:...在原生情况下,客户端配置、用户信息、角色信息都由Keycloak负责;客户端只负责角色和资源映射关系。后续会深入并定制Keycloak和Spring Security以满足实际场景需要。

2.1K20

kubernetes API 访问控制之:认证

客户端库方式对REST API访问,Kubernetes普通账户和Service帐户都可以实现授权访问API。...这样做好处也显而易见,用户账户信息与Kubernetes集群松耦合,便于集成企业已有的身份认证系统,如AD、LADP、Keycloak等。...普通帐户是针对(人)用户服务账户针对Pod进程。 普通帐户是全局性。在集群所有namespaces中,名称具有惟一性。 通常,群集普通帐户可以与企业数据库同步,新普通帐户创建需要特殊权限。...服务账户创建目的是更轻量化,允许集群用户为特定任务创建服务账户。 普通帐户服务账户审核注意事项不同。 对于复杂系统配置包,可以包括对该系统各种组件服务账户定义。...在整个过程中, Kubernetes 既作为资源(Resource)服务器,又作为用户代理 User-Agent 存在,但它并不提供引导用户到 Auth Server 进行认证功能,相反,它要求用户先自行获取

7.1K20

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

登录及身份认证是现代web应用最基本功能之一,对于企业内部系统,多个系统往往希望有一套SSO服务对企业用户登录及身份认证进行统一管理,提升用户同时使用多个系统体验,Keycloak正是为此种场景而生...这里先只介绍4个最常用核心概念: Users: 用户,使用并需要登录系统对象 Roles: 角色,用来对用户权限进行管理 Clients: 客户端,需要接入Keycloak并被Keycloak...保护应用和服务 Realms: 领域,领域管理着一批用户、证书、角色、组等,一个用户只能属于并且能登陆到一个域,域之间是互相独立隔离, 一个域只能管理它下面所属用户 Keycloak服务安装及配置...事实上,Keycloak目前访问类型共有3种: confidential:适用于服务端应用,且需要浏览器登录以及需要通过密钥获取access token场景。...bearer-only:适用于服务端应用,不需要浏览器登录,只允许使用bearer token请求场景。典型使用场景就是restful api

2.3K30

keycloak集群化思考

load balancing负载均衡 因为是集群结构,所以我们后端是有多台服务,那么用户通过客户端来访问我们服务时候,究竟应该定位到哪一台服务器呢?...一般来说三种负载均衡方式: 第一种,就是客户端负载均衡,客户端已经知道了服务多个服务地址,在发送请求时候由客户端自行选择要请求服务地址。...这种模式一般都要配置一个强力客户端API,通过这个客户端API来进行路由功能,比如说Memcached。 Memcached神奇来自两阶段哈希(two-stagehash)。...我们在特定业务中需要获取用户ip地址来进行一些操作,比如记录用户操作日志,如果不能够获取到真实ip地址的话,则可能使用错误ip地址。还有就是根据ip地址进行认证或者防刷工作。...然后服务器端就可以从X-Forwarded-For获取到客户真实ip地址了。

1.2K30

适用于Java开发人员服务:管理安全性和机密

最后,在我们开始之前,请将Java SE安全编码指南作为您团队中任何Java开发人员必读内容。此外,Java SE平台官方文档包括了所有与Java安全性相关规范、指南和api良好摘要。...四.身份验证和授权(Authentication and Authorization) 识别各种可能参与者(用户服务,合作伙伴和外部系统)以及允许他们在系统中做什么是确保微服务安全另一个方面。...它允许客户端基于授权服务器执行身份验证来验证最终用户身份,并以可互操作且类似于REST方式获取有关最终用户基本配置文件信息-https://openid.net/connect/ 这两个标准与JSON...Keycloak是针对现代应用程序和服务开源身份和访问管理解决方案。 它使您几乎不需要代码即可轻松保护应用程序和服务。...尽管如此,许多组织仍然将配置存储在服务附近配置文件中,甚至硬编码在代码中。更糟糕是,此类配置通常包含敏感信息,例如访问数据存储、服务帐户或加密密钥凭据。这类资料属于机密,绝不能公开泄露。

1.2K30

基于KeycloakGrafana SSO身份认证过程剖析

(第三方软件外部用)auth_url:浏览器访问时,第三方软件(Grafana)靠此url使用户浏览器转向Keycloak认证登录界面,用户Keycloak登录成功后,keycloak会生成一个针对该用户...(第三方软件内部用)api_url:第三方软件内部使用api_url,以及上一步access_token与keycloak通信,获取这个用户详细信息后,内部注册用户并存储session,最后将浏览器重定向到第三方软件首页...,点击登录,认证成功后 #该请求responseHeader看出,keycloak登录成功,客户端可以转向grafana了,并给予了keycloakcode http://localhost:3000...通信,用code换回accesstoken #有了accesstoken后,遂向keycloak,发起api_url请求,获取用户身份 #此时存入自己管理用户session #然后返回 #response...header里,设置浏览器grafana cookie,说明grafana已经将keycloakcode验证登录后,生成了该客户端grafana_session Set-Cookie: oauth_state

6.6K111

keycloak集群化思考

load balancing负载均衡 因为是集群结构,所以我们后端是有多台服务,那么用户通过客户端来访问我们服务时候,究竟应该定位到哪一台服务器呢?...一般来说三种负载均衡方式: 第一种,就是客户端负载均衡,客户端已经知道了服务多个服务地址,在发送请求时候由客户端自行选择要请求服务地址。...这种模式一般都要配置一个强力客户端API,通过这个客户端API来进行路由功能,比如说Memcached。 Memcached神奇来自两阶段哈希(two-stagehash)。...我们在特定业务中需要获取用户ip地址来进行一些操作,比如记录用户操作日志,如果不能够获取到真实ip地址的话,则可能使用错误ip地址。还有就是根据ip地址进行认证或者防刷工作。...然后服务器端就可以从X-Forwarded-For获取到客户真实ip地址了。

1.4K21

Keycloak简单几步实现对Spring Boot应用权限控制

首先我们需要在这些开放平台上注册一个客户端获取一套类似用户名和密码凭证。有的叫appid和secret;有的叫clientid和secret,都是一个意思。...下图不仅仅清晰地说明了keycloak中Masterrealm和自定义realm关系,还说明了在一个realm中用户客户端关系。 ?...填写重定向URL 为了测试,这里我只填写了设置选项卡中唯一必填项有效重定向URI,这个选项意思就是客户端springboot-client所有API都会受到权限管控。...获取和刷新JWT 我们可以通过下面这个方式获取用户登录JWT对: POST /auth/realms/felord.cn/protocol/openid-connect/token HTTP/1.1...配置如下: keycloak: # 声明客户端所在realm realm: felord.cn # keycloak授权服务地址 auth-server-url: http://localhost

2K50

OAuth2.0 技术选型参考

我们应用只作为 Client 进行注册接入即可。也就是说我们只需要实现 OAuth2.0 客户端逻辑就可以了,无须关心授权服务实现。...因此鼓励用户开始将其旧版 OAuth 2.0 客户端和资源服务器应用程序迁移到Spring Security 5.2 中新支持。详细参见 官方博客. 3....对 OAuth2.0 技术选型 从上面的信息看来, Spring Security 未来依然提供 OAuth2 客户端支持 和 资源服务器支持。...我这里调研了几个开源免费项目。 3.1 keycloak keycloak是 RedHat 公司出品。是一个致力于解决应用和服务身份验证与访问管理开源工具。...用户集中管理。 客户端适配器,轻松保护应用程序和服务。 可视化管理控制台和帐户管理控制台。 可扩展性、高性能、快速实现落地。 文档比较完毕,而且是一个成熟、免费商业级产品。

1.5K40

OAuth2 服务KeycloakRealm

什么时候用到Realm 当特定数量用户之间需要隔离时候、一系列服务需要统一进行资源管理时候就用到了Realm。可能我描述不够全面,至少目前我能感觉到就是这样。...这个是Keycloak内建Realm,它作用有点类似Linux中root用户,主要是管理其它Realm,Master Realm中管理员账户有权查看和管理在Keycloak服务器实例上创建任何其它...而且你会发现Master Realm中创建用户可以赋予其独有的两种角色: admin 超级管理员,拥有管理Keycloak服务器上任何realm完全访问权限。...把该客户端所有角色都赋予建立用户。...扩展 Keycloak Admin Client是通过API操作管理Realm一个客户端工具,我在上一篇已经介绍过了。结合本篇一些概念可能你会更加深刻理解如果操作管理Realm。

1.6K60

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

主要功能: 所有应用系统共享一个身份认证系统 所有应用系统能够识别和提取ticket信息 协议 用户中心系统作为服务端,肯定是要跟客户端进行对接来授权&获取用户信息。...其宗旨基本一致:浏览器向客户端发起请求,客户端访问用户系统获取 Cookie 或其他认证条件,由用户系统负责登录并将认证后条件返回给客户端。...其核心是服务端返回 ticket 作为认证条件,由客户端判断条件是否存在,存在则通过验证接口验证用户登录状态,同时返回用户信息,否则进行登录。...同时客户端可以自定义登录流程,通过服务端提供接口进行认证。总体流程如图^1: 使用方也就是 Apereo CAS,此外有少数语言也按此协议开发了不同服务端,不过应用甚少。...这是一个支持比较完整用户认证系统,由 Java 开发,基于 jboss。

4.1K51

如何在Ubuntu 16.04上使用Alerta监视Zabbix警报

单击“ 创建帐户”链接并创建一个新帐户。完成此过程后,您将可以访问Alerta仪表板。 启用身份验证后,您将需要一个API密钥才能访问Alerta API。选择配置菜单,然后选择API密钥。...复制下一个屏幕上提供客户端ID和客户端密钥值。 接下来,编辑Alerta配置以启用OAuth身份验证。...客户端ID,GitHub客户端密钥和GitHub组织来获取这些值。...首先,安装命令行客户端: sudo pip install alerta 然后创建一个配置文件,该文件定义您之前配置Alerta API端点以及您要使用API密钥。...单击“ 添加”按钮以创建新媒体类型。 然后为您用户帐户添加新媒体。在主菜单中选择“ 管理 ”,然后选择“ 用户”。单击您用户名,然后选择“ 媒体”选项卡。

4.1K40
领券