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

如何在Spring中获取Keycloak令牌

在Spring中获取Keycloak令牌可以通过以下步骤实现:

  1. 配置Keycloak依赖:在项目的pom.xml文件中添加Keycloak的依赖项,例如:
代码语言:txt
复制
<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
  1. 配置Keycloak客户端信息:在项目的application.properties或application.yml文件中配置Keycloak客户端的相关信息,包括Keycloak服务器的URL、Realm名称、客户端ID和客户端密钥等。例如:
代码语言:txt
复制
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.realm=myrealm
keycloak.resource=myclient
keycloak.credentials.secret=myclientsecret
  1. 创建Keycloak配置类:创建一个Keycloak配置类,用于将Keycloak的配置信息注入到Spring容器中。例如:
代码语言:txt
复制
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
        keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
        auth.authenticationProvider(keycloakAuthenticationProvider);
    }

    @Bean
    public KeycloakSpringBootConfigResolver keycloakConfigResolver() {
        return new KeycloakSpringBootConfigResolver();
    }

    @Bean
    @Override
    protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
        return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.authorizeRequests()
            .antMatchers("/api/**").hasRole("user")
            .anyRequest().permitAll();
    }
}
  1. 获取Keycloak令牌:在需要获取Keycloak令牌的地方,可以使用Spring Security的SecurityContextHolder来获取当前用户的认证信息,包括令牌信息。例如:
代码语言:txt
复制
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication instanceof KeycloakAuthenticationToken) {
    KeycloakAuthenticationToken keycloakAuthenticationToken = (KeycloakAuthenticationToken) authentication;
    KeycloakPrincipal<KeycloakSecurityContext> principal = (KeycloakPrincipal<KeycloakSecurityContext>) keycloakAuthenticationToken.getPrincipal();
    KeycloakSecurityContext keycloakSecurityContext = principal.getKeycloakSecurityContext();
    AccessToken accessToken = keycloakSecurityContext.getToken();
    // 获取令牌信息,如令牌的ID、过期时间、用户信息等
    String tokenId = accessToken.getId();
    Date expirationDate = accessToken.getExpiration();
    String userId = accessToken.getSubject();
    // 其他操作...
}

通过以上步骤,你可以在Spring中获取Keycloak令牌,并使用令牌中的信息进行后续的业务处理。请注意,以上代码仅为示例,实际使用时需要根据具体的业务需求进行适当的调整。

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

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

相关·内容

Spring OAuth2 实现始终获取新的令牌

Spring基于OAuth2协议编写的spring-oauth2实现,是行业级的接口资源安全解决方案,我们可以基于该依赖配置不同客户端的不同权限来访问接口数据。...推荐阅读 SpringBoot2.x 教程汇总 默认令牌生成方式 每当我们获取请求令牌(access_token)时,默认情况返回第一次生成的令牌,使用同一个用户多次获取令牌时,只有过期时间在缩短,其它的内容不变...从阅读源码可以发现无论我们配置使用什么方式来进行存储令牌,同一个账户的有效令牌只会存在一个,结合上面的场景来思考所以第二个人获取令牌与第一个人是同一个。...grant_type=refresh_token)重新获取一次新的(有效期为2个小时)请求令牌,当刷新令牌(refresh_token)失效后,再次通过createAccessToken方法来获取令牌。...本篇文章示例源码可以通过以下途径获取,目录为oauth2-always-create-token: Gitee:https://gitee.com/hengboy/spring-boot-chapter

2.1K20
  • Keycloak Spring Security适配器的常用配置

    在上一篇Keycloak系列文章,我们把KeycloakSpring Security成功适配,其中用了一个keycloak.json的配置。...Keycloak适配器的常用属性 在Spring Security集成Keycloak 适配器时需要引入一些额外的配置属性。一般我们会把它配置到Spring Boot的配置文件。...expose-token JavaScript CORS 请求通过根路径下/k_query_bearer_token用来从服务器获取令牌的,好像是nodejs相关的后端应用使用的东西,我折腾了半天没有调用成功...credentials 当客户端的访问类型(access type)为Confidential时,需要配置客户端令牌,目前支持secret和jwt类型。参考public-client的描述。...下一篇我将对Keycloak Spring Security认证授权的流程作出一个分析。

    2.5K51

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

    首先下载Keycloak的Docker镜像,注意使用jboss的镜像,官方镜像不在DockerHub; docker pull jboss/keycloak:14.0.0 使用如下命令运行Keycloak...结合Oauth2使用 OAuth 2.0是用于授权的行业标准协议,在《Spring Cloud Security:Oauth2使用入门》 一文我们详细介绍了Oauth2的使用,当然Keycloak也是支持的...(A)客户端将用户导向认证服务器; (B)用户在认证服务器进行登录并授权; (C)认证服务器返回授权码给客户端; (D)客户端通过授权码和跳转地址向认证服务器获取访问令牌; (E)认证服务器发放访问令牌...(A)客户端从用户获取用户名和密码; (B)客户端通过用户的用户名和密码访问认证服务器; (C)认证服务器返回访问令牌(有需要带上刷新令牌)。...--集成Keycloak--> org.keycloak keycloak-spring-boot-starter

    2.6K21

    一个接口是如何在KeycloakSpring Security之间执行的

    在上一篇我们对Keycloak的常用配置进行了熟悉,今天我们来对Keycloak适配Spring Security的执行流程做一个分析,简单了解一下其定制的一些Spring Security过滤器。.../admin/foo的执行流程 在适配了KeycloakSpring Security的Spring Boot应用,我编写了一个/admin/foo的接口并对这个接口进行了权限配置: @Override...如果Spring Security没有存Session或者Cookie也没有就会把/admin/foo缓存到Cookie,然后重定向到Keycloak授权页: http://localhost:8011...认证授权成功就从Session重新获取/admin/foo接口并跳转。整个简单的Keycloak认证授权过程就完成了。...Keycloak Spring Security Adapter的运行流程如果你想搞清楚,最好是自己先试一试。

    1.9K20

    何在Spring容器管理的类中注入获取 Spring容器的 Bean?

    何在Spring容器管理的类中注入/获取 Spring容器的 Bean? 前言:此文仅限新手入行,大佬回避。...什么是被Spring容器管理的类? 只要是被称之为Bean的类就是被Spring容器管理的类。...不了解的可以看看小简写的这一篇: 将Bean交给Spring容器管理的几种方式 在非Spring管理的类怎么办? 有时候我们就是需要在非Spring管理的类中使用Bean怎么办呢?...比如我这一篇: 踩坑篇之WebSocket实现类无法使用@Autowired注入对象 解决方法 我们定义一个上下文类,在Spring将Bean全部扫描完成后,我们去使用类去实现ApplicationContextAware...接口,重写setApplicationContext方法,获取到ApplicationContext数据后,放到静态属性

    4.3K40

    面试官:SSO单点登录和 OAuth2.0 有何区别?

    当用户在第一个应用程序登录时,服务器会生成一个包含用户信息的令牌,并将其发送给客户端(通常是浏览器)。客户端会存储这个令牌,并在访问其他应用程序时将其作为请求的一部分发送。...目前来说,如果你想在项目中使用 OAuth2 的话,主要有如下几种主流框架: Spring Security OAuth:Spring Security OAuth 是 Spring框架的一个扩展,提供了对...它允许开发者在 Spring 应用程序轻松实现 OAuth2 认证和授权流程,包括授权服务器、资源服务器和客户端应用程序的配置。...KeycloakKeycloak 是一个开源的身份和访问管理解决方案,它支持 OAuth2、OpenID Connect 和其他身份协议。...Keycloak 提供了一个易于使用的管理界面,允许开发者配置和管理 OAuth2 相关的设置,客户端、用户和角色等。

    43311

    SSO 单点登录和 OAuth2.0 有何区别?

    当用户在第一个应用程序登录时,服务器会生成一个包含用户信息的令牌,并将其发送给客户端(通常是浏览器)。客户端会存储这个令牌,并在访问其他应用程序时将其作为请求的一部分发送。...它允许开发者在 Spring 应用程序轻松实现 OAuth2 认证和授权流程,包括授权服务器、资源服务器和客户端应用程序的配置。...KeycloakKeycloak 是一个开源的身份和访问管理解决方案,它支持 OAuth2、OpenID Connect 和其他身份协议。...Keycloak 提供了一个易于使用的管理界面,允许开发者配置和管理 OAuth2 相关的设置,客户端、用户和角色等。...Oltu 可以帮助开发者快速构建 OAuth2 客户端和服务器组件,并支持多种授权流程,授权码流程、隐式流程等。 这些框架和库提供了 OAuth2 协议的完整实现,包括令牌生成、验证、刷新、撤销等。

    53710

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

    6.4 延长 Token 时间(可选) Keycloak 设置的 access_token 和 id_token 的有效期默认是 1 分钟,为了方便后续的实验,这里将令牌的有效期延长至 30 分钟。...现在我们已经完成了 Keycloak 和 Kubernetes 的设置,接下来我们尝试获取身份验证令牌,需要提供以下参数: grant_type:获取令牌的方式。...当运行 kubectl 命令时,kubelogin 会打开浏览器,用户需要输入用户名和密码登录程序,认证通过后,kubelogin 会从认证服务器获取一个令牌,然后 kubectl 就可以使用该令牌和...当用户 tom 执行 kubectl 命令时,将会通过 kubectl oidc-login get-token 命令获取令牌。...[如何在 Apache APISIX 中集成 Keycloak 实现身份认证] (https://apisix.apache.org/zh/blog/2021/12/10/integrate-keycloak-auth-in-apisix

    6.5K20

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

    经过一番调研选中了红帽开源的Keycloak,这是一款非常强大的统一认证授权管理平台。之所以选中了Keycloak是基于以下几个原因。...令牌映射 - 将用户属性、角色等映射到令牌和语句中。 安全策略恢复功能。 CORS 支持 - 客户端适配器具有对 CORS 的内置支持。 自定义SPI接口扩展。...❝ 有专门的Spring Boot Starter,非常容易集成到Spring Boot。 基于实践的开源 “红帽出品,必属精品。”红帽良好的口碑决定了Keycloak的可靠性。...适配Spring Security 这个框架对Spring Security和Spring Boot做了适配,非常适合使用了这两种体系的迁移扩展。这也是我选择它的重要原因之一。...在目前新的Spring认证服务器还没有达到生产可用时是一个不错的选择。

    1.7K10

    开源身份认证神器:KeyCloak

    ://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_boot_adapter 当然,如果你对Spring Security比较熟悉...在方法获得身份、角色等信息 很多场景下,我们希望在Controller获得当前用户的主体信息,例如获取当前登录的用户名、角色等信息。此时该怎么办呢?...与Spring Cloud整合 经过上文的讲解,我们已实现Keycloak整合Spring Boot应用。那么,在一个使用Spring Cloud构建的分布式应用,要如何整合Keycloak呢?...按照前文整合Spring Boot的步骤,在相同Realm,创建一个新的Client,名为ms-consumer-sample ,然后为ms-consumer-sample 微服务也整合Keycloak...它可以是一组端点,一个经典的网页资源,HTML页面等。在authorization policy术语,资源是受保护的对象。 每个resource都有唯一的标识符,可用来表示单个或一组资源。

    5.9K20

    何在Bash获取数组长度?

    在Bash脚本,数组是一种常用的数据结构,用于存储多个值。在处理数组时,经常需要知道数组的长度,即数组中元素的个数。本文将详细介绍如何在Bash获取数组长度的方法,以帮助您更好地处理数组操作。...方法一:使用${#array_name[@]}获取数组长度在Bash,可以使用${#array_name[@]}的形式来获取数组的长度。这个表达式会返回数组元素的个数。..."输出结果为:数组长度为: 3${#array_name[*]}与${#array_name[@]}的区别在于对待数组的空白字符。...总结在Bash脚本获取数组长度是一项常见的操作。本文介绍了四种方法来获取数组长度:使用${#array_name[@]}:展开数组为元素列表,并返回列表的长度。...这些方法的任何一种都可以用于获取数组的长度,具体使用哪种方法取决于个人偏好和脚本的需求。掌握这些方法可以帮助您更好地处理Bash的数组操作,从而提高脚本编写的效率和灵活性。

    1.1K00

    何在 React 获取点击元素的 ID?

    在 React 应用,我们经常需要根据用户的点击事件来执行相应的操作。在某些情况下,我们需要获取用户点击元素的唯一标识符(ID),以便进行进一步的处理。...本文将详细介绍如何在 React 获取点击元素的 ID,并提供示例代码帮助你理解和应用这个功能。使用事件处理函数在 React ,我们可以使用事件处理函数来获取点击元素的信息。...在事件处理函数,我们可以通过 event.target 来访问触发事件的元素。通过 event.target.id 可以获取到点击元素的 ID。...使用 ref除了事件处理函数,我们还可以使用 ref 来获取点击元素的信息。通过创建一个引用(ref),可以在组件引用具体的 DOM 元素,并访问其属性和方法。...结论本文详细介绍了在 React 获取点击元素的 ID 的两种方法:使用事件处理函数和使用 ref。

    3.4K30
    领券