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

Spring Boot Keyloak获取当前登录用户的持有者令牌

Spring Boot是一个开源的Java框架,用于快速构建基于Spring的应用程序。Keycloak是一个开源的身份和访问管理解决方案,用于保护应用程序和API。它提供了单点登录、多因素身份验证、授权和用户管理等功能。

在Spring Boot中使用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、领域、客户端ID和客户端密钥等。
代码语言:txt
复制
keycloak.auth-server-url=<Keycloak服务器URL>
keycloak.realm=<Keycloak领域>
keycloak.resource=<Keycloak客户端ID>
keycloak.credentials.secret=<Keycloak客户端密钥>
  1. 创建Keycloak配置类:创建一个继承自KeycloakWebSecurityConfigurerAdapter的配置类,并重写configure方法,配置Spring Security与Keycloak的集成。
代码语言: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. 获取当前登录用户的持有者令牌:在需要获取当前登录用户的地方,可以使用KeycloakSecurityContext来获取当前用户的持有者令牌。
代码语言:txt
复制
@Autowired
private KeycloakSecurityContext keycloakSecurityContext;

public String getCurrentUserToken() {
    return keycloakSecurityContext.getTokenString();
}

通过以上步骤,就可以在Spring Boot应用程序中使用Keycloak获取当前登录用户的持有者令牌。

关于Keycloak的更多信息和详细配置,请参考腾讯云的Keycloak产品介绍页面:Keycloak产品介绍

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

相关·内容

项目之通过Spring Security获取当前登录用户信息(6)

处理登录获取权限 以上注册过程中添加了“分配角色”,而各角色是对应某些权限,所以,“分配角色”过程就是“分配权限”过程!...在用户登录时,应该读取用户权限,以完成Spring Security在验证过程中授权,以保证后续在进行某些访问时,能给出正确判断,使得某些用户可以执行某些操作,而另一些用户可能因为没有权限而不能执行这些操作...通过Spring Security获取当前登录用户信息 当用户成功登录后,需要获取用户信息才可以执行后续操作,例如获取用户权限、获取用户问题列表、获取用户个人信息等等。...Spring Security提供了简便获取当前登录用户信息做法,在控制器处理请求方法中,添加Authentication类型参数,或添加Principal类型参数,均可获得当前登录用户信息...()); userInfo.setGender(user.getGender()); userInfo.setType(user.getType()); return userInfo; 以后,当需要获取当前登录用户信息时

1.8K10

写了一个 SSO 单点登录代码示例给胖友!

获取到访问令牌之后,每次请求 XXX 系统时,都会调用 统一登录系统 security.oauth2.resource.client.token-info-uri 地址,校验访问令牌有效性,同时返回用户基本信息...3.4 UserController 创建 UserController 类,提供获取当前用户 /user/info 接口。...在 XX 系统回调地址,拿到授权授权码后,会自动请求统一登录系统,通过授权码获取到访问令牌。如此,我们便完成了 XXX 系统 登录。...获取授权码完成后,自动跳转到登录 http://127.0.0.1:9090/user/info 地址,打印出当前登录用户信息。如下图所示: ?...ROLE_USER 角色 public String userList() { return "用户列表"; } } 因为当前登录用户只有 ROLE_USE 角色,

1.6K10

Spring Security 授权详解

我们选用第一种,把API网关作为OAuth2.0资源服务器角色,实现接入客户端权限拦截、令牌解析并转发当前登录用户信息(jsonToken)给微服务,这样下游微服务就不需要关心令牌格式解析以及OAuth2.0...API网关在认证授权体系里主要负责两件事: (1)作为OAuth2.0 资源服务器 角色,实现接入方权限拦截。 (2)令牌解析并转发当前登录用户信息(明文token)给微服务。...微服务拿到明文token(明文token中包含登录用户身份和权限信息)后也需要做两件事: (1)用户授权拦截(看当前用户是否有权限访问资源)。...,目的是让上下游微服务能够很方便获取当前登录用户信息(明文token) (1)实现Zuul前置过滤器,完成当前登录用户信息提取,并放入转发到微服务request中 : /** * token传递拦截...UAA授权获取令牌获取token,注意网关端口是53010 : http://127.0.0.1:53010/uaa/oauth/token 通过网关访问UAA授权获取令牌 (2)通过网关UAA

2.6K44

这套Spring Cloud Gateway+Oauth2终极权限解决方案升级了!

,负责对登录用户进行认证,整合Spring Security+Oauth2; micro-oauth2-api:API服务,受网关服务保护,用户鉴权通过后可以访问该服务,不整合Spring Security...升级注意点 这里项目的依赖版本都升级了,支持SpringBoot 2.7.0和最新版Spring Cloud; 2.7.0... spring-boot-maven-plugin ${spring-boot.version}<...hello 带JWT令牌访问受保护API接口,注意请求头Authorization添加Bearer前缀,可以正常访问; 使用获取JWT令牌访问获取当前登录用户信息接口,访问地址:http:/.../localhost:9201/api/user/currentUser 当JWT令牌过期时,使用接口返回refreshToken获取JWT令牌,访问地址:http://localhost:9201

1.1K20

微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!

负责对登录用户进行认证,整合Spring Security+Oauth2; micro-oauth2-api:受保护API服务,用户鉴权通过后可以访问该服务,不整合Spring Security+Oauth2...,然后存入请求Header中,这样后续服务就不需要解析JWT令牌了,可以直接从请求Header中获取用户信息。..."; } } 创建一个LoginUserHolder组件,用于从请求Header中直接获取登录用户信息; /** * 获取登录用户信息 * Created by macro on 2020...Convert.toList(String.class,userJsonObject.get("authorities"))); return userDTO; } } 创建一个获取当前用户信息接口...使用获取JWT令牌访问获取当前登录用户信息接口,访问地址:http://localhost:9201/api/user/currentUser ?

18.6K77

Spring Boot:整合Spring Security

综合概述 Spring Security 是 Spring 社区一个顶级项目,也是 Spring Boot 官方推荐使用安全框架。...另外,就目前而言,Spring Security和Shiro也是当前广大应用使用比较广泛两个安全框架。...Spring Security 应用级别的安全主要包含两个主要部分,即登录认证(Authentication)和访问授权(Authorization),首先用户登录时候传入登录信息,登录验证器完成登录认证并将登录认证好信息存储到请求上下文...就是继承了此抽象类,完成了从DAO方式获取验证需要用户信息。...Boot:整合MyBatis框架 Spring Boot:实现MyBatis分页 Spring Boot:集成Druid数据源 Spring Boot:实现MyBatis动态数据源 Spring Boot

3.1K21

JWT学习

Java中解析JWT中内容 刷新令牌 Spring Security Oauth2 整合单点登录(SSO) 创建客户端工程,添加依赖 修改配置文件 在启动类上添加@EnableOAuth2Sso注解来启用单点登录功能...添加接口用于获取当前登录用户信息 修改认证服务器配置 测试 ---- 常见认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户username...如网站通过微信、微博登录等,主要用于第三方登录。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者数据。...中使用oauth2时,如果令牌失效了,可以使用刷新令牌通过refresh_token授权模式再次获取access_token。...String[] args) { SpringApplication.run(Oauth2client01demoApplication.class, args); } } 添加接口用于获取当前登录用户信息

2.8K40

单点登录与授权登录业务指南

注销登录 注:素材图片取自www.cnblogs.com/ywlaker/p/6… 以上流程图用文字描绘如下: 用户向系统1发起注销请求:设想用户当前登录在系统1(比如一个邮件服务),并希望注销...通知所有注册系统执行注销操作:SSO认证中心接着获取所有使用该用户令牌注册系统地址,并向这些系统发送注销请求。...要使用Spring Boot实现一个简单单点登录(SSO)系统,包括 sso-server 和 sso-client,您需要创建两个独立Spring Boot项目:一个用于sso-server,另一个用于...获取访问令牌:第三方应用使用授权码向授权服务器请求访问令牌。 访问受保护资源:第三方应用使用访问令牌请求用户数据。...以下是一个简单授权登录实现概要步骤,假设我们正在创建一个允许用户通过Google账户登录应用。 创建Spring Boot项目 首先,创建一个新Spring Boot项目。

72621

可能是第二好 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~

前者只能获取用户 openid,而后者可以获取用户基本信息。 OAuth2.0 是用于授权行业标准协议。...有了授权之,客户端就可以获取令牌,进而凭令牌获取资源。 “友情提示:如果胖友有对接过三方开放平台,例如说微信、QQ、微博等三方登录,就会很容易理解这个步骤过程。...下面,我们来进行 /login 接口测试。 ① 首先,请求 http://127.0.0.1:9090/login 接口,使用用户用户名与密码进行登录,获得访问令牌。如下图所示: ?...因为我们并未登录授权服务器,所以被拦截跳转到登录界面。如下图所示: ? 登录界面 ② 输入用户账号密码「yunai/1024」进行登录登录完成后,进入授权界面。...因为我们并未登录授权服务器,所以被拦截跳转到登录界面。如下图所示: ? 登录界面 ② 输入用户账号密码「yunai/1024」进行登录登录完成后,进入授权界面。

2K30

创建一个Spring Security OAuth认证服务

理论 OAuth2是允许应用程序获取对HTTP服务(如GitHub、使用qq登录某网站、使用微信登录某网站等等)上用户帐户有限访问权限授权框架。...OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定第三方网站,同时该令牌只能在特定时间内访问特定资源。...用户在服务商授权页面上输入自己用户名和密码,授权第三方网站访问所想要和能够访问资源。 授权成功后,服务商将用户导向第三方网站返回地址。 第三方网站根据临时令牌从服务商那里获取访问令牌。...服务商根据令牌用户授权情况授予第三方网站访问令牌。 第三方网站使用获取访问令牌访问存放在服务商对应用户资源。...在公司内部统一账户登录认证中,也可以通过oauth方式为要想要接入登录验证内部项目提供统一登录入口。在互联网上,你也构建自己oauth认证server向第三方应用提供经过用户授权用户资料。

84270

Spring Boot 自动登录,安全风险要怎么控制?松哥教你两招

在上篇文章中,我们提到了 Spring Boot 自动登录存在一些安全风险,在实际应用中,我们肯定要把这些安全风险降到最低,今天就来和大家聊一聊如何降低安全风险问题。...Spring Boot + Spring Security 实现自动登录功能 好了,我们就不废话了,来看今天文章。...1.持久化令牌 1.1 原理 要理解持久化令牌,一定要先搞明白自动登录基本玩法,参考(Spring Boot + Spring Security 实现自动登录功能)。...持久化令牌就是在基本自动登录功能基础上,又增加了新校验参数,来提高系统安全性,这一些都是由开发者在后台完成,对于用户来说,登录体验和普通自动登录体验是一样。...此时根据用户名移除相关 token,相当于必须要重新输入用户名密码登录才能获取自动登录权限。 接下来校验 token 是否过期。

1.2K30

Spring Security项目中集成JWT Token令牌安全访问后台API

同时为了确保客户端安全访问后台服务API,需要用户登录成功之后返回一个包含登录用户信息jwt token, 用于调用其他接口时将此jwt token携带在请求头中作为调用者认证信息。...用户登录后,每个后续请求都将包含 JWT,从而允许用户访问该令牌允许路由、服务和资源。单点登录是当今广泛使用 JWT 一项功能,因为它开销很小并且能够在不同域中轻松使用。...jwt 使用方式 在身份校验中,当用户成功登录,将返回一个 JSON Web Token。由于令牌是凭据,因此必须非常小心以防止出现安全问题。...客户端获取jwt令牌访问受保护资源具体流程 1) 用户在在客户端使用用户名/密码登录; 2)服务端使用密钥生成一个JWT令牌; 3)服务端将生存jwt令牌返回给浏览器; 4)用户拿到jwt 令牌放到...Authentication参数对应请求头中访问服务端受保护资源和API; 5)服务端校验签名,从jwt令牌中解析获取用户信息; 6)服务端校验签名通过并从jwt令牌中解析出用户信息,则返回API成功响应信息给客户端

4.2K20

Oauth2协议

,点击微信图标以微信账号登录系统,用户是自己在微信里信息资源拥有者。...认证服务器向客户端响应令牌 认证服务器验证了客户端请求授权码,如果合法则给客户端颁发令牌令牌是客户端访问资源通行证。此交互过程用户看不到,当客户端拿到令牌后,用户在网站看到已经登录成功。...客户端请求资源服务器资源 客户端携带令牌访问资源服务器资源。网站携带令牌请求访问微信服务器获取用户基本信息。...):客户请求访问令牌时,由资源拥有者额外指定细分权限(permission) ---- 令牌类型 授权码:仅用于授权码授权类型,用于交换获取访问令牌和刷新令牌 访问令牌:用于代表一个用户或服务直接去访问受保护资源...id和秘钥 密码登录输入就是我们自定义用户时,设置用户名和密码 访问请求获取令牌 http://localhost:8080/oauth/token 获取令牌 拿着令牌请求资源 ----

1.3K10

Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十五):Spring Security 版本

,但对于 Spring 官方主推安全框架 Spring Security,用户群也是甚大,所以我们这里把当前代码切分出一个 shiro-cloud 分支,作为 Shiro + Spring Cloud...技术分支代码,dev 和 master 分支将替换为 Spring Security + Spring Cloud 技术栈,并在后续计划中集成 Spring Security OAuth2 实现单点登录功能...-- spring security --> org.springframework.boot spring-boot-starter-security...实现 UserDetailsService 接口,定义用户认证信息查询组件,用于获取认证所需用户信息和授权信息。...JwtTokenUtils.java /** * 根据请求令牌获取登录认证信息 * @param token 令牌 * @return 用户名 */

1.4K31
领券