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

如何使用Spring Boot + Spring Security + KeyCloak验证每个请求?

使用Spring Boot + Spring Security + Keycloak验证每个请求的步骤如下:

  1. 首先,确保你已经安装了Java开发环境和Maven构建工具。
  2. 创建一个Spring Boot项目,并在pom.xml文件中添加所需的依赖:
代码语言:txt
复制
<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- Keycloak Adapter -->
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
    </dependency>
</dependencies>
  1. 在application.properties文件中配置Keycloak服务器的连接信息:
代码语言:txt
复制
# Keycloak Configuration
keycloak.realm=your-realm
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.ssl-required=external
keycloak.resource=your-client-id
keycloak.credentials.secret=your-client-secret
keycloak.use-resource-role-mappings=true
keycloak.bearer-only=true
  1. 创建一个Spring Security配置类,用于配置安全规则和Keycloak集成:
代码语言:txt
复制
@Configuration
@EnableWebSecurity
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();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.authorizeRequests()
            .antMatchers("/api/public").permitAll()
            .antMatchers("/api/private").authenticated();
    }
}
  1. 创建一个REST控制器类,用于定义API端点:
代码语言:txt
复制
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/public")
    public String publicEndpoint() {
        return "This is a public endpoint.";
    }

    @GetMapping("/private")
    public String privateEndpoint() {
        return "This is a private endpoint.";
    }
}
  1. 运行Spring Boot应用程序,并访问API端点进行测试。公共端点(/api/public)应该无需身份验证,而私有端点(/api/private)应该需要有效的Keycloak令牌才能访问。

这样,你就成功地使用Spring Boot + Spring Security + Keycloak验证每个请求了。

关于Spring Boot、Spring Security和Keycloak的更多详细信息和用法,请参考以下链接:

  • Spring Boot官方文档:https://spring.io/projects/spring-boot
  • Spring Security官方文档:https://spring.io/projects/spring-security
  • Keycloak官方文档:https://www.keycloak.org/documentation.html

请注意,以上答案仅供参考,具体实现可能因环境和需求而异。

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

相关·内容

  • OAuth2授权服务器Keycloak宣布不再适配Spring BootSpring Security

    2月14日,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器。...其中包括Spring SecuritySpring Boot的适配器,这意味着今后Keycloak团队将不再提供针对Spring SecuritySpring Boot的集成方案。...声明表示Keycloak团队将弃用绝大部分适配器的维护,将更多精力放在Keycloak服务器本身。此外Keycloak的也将通过入门指南为各类应用程序的安全提供指导方案,甚至是适配器替代方案。...SecuritySpring Boot adapters 当然还有一些适配器将继续维护: OpenID Connect client-side JavaScript adapter SAML WildFly...目前Spring生态的Spring Authorization Server也逐步完善,会迅速填补这片空白。胖哥也在积极编写相关的系列教程。

    1.5K20

    Spring SecuritySpring Boot 中的使用【集中式】

    1.1 准备 1.1.1 创建 Spring Boot 项目   创建好一个空的 Spring Boot 项目之后,写一个 controller 验证此时是可以直接访问到该控制器的。 ? ?...Spring Boot 帮我们完成了在 Spring 中需要完成的诸多配置【☞ Spring Security 基础入门】。...也正是因为 Spring Boot 提供了自动化配置方案,让我们可以“零配置”的使用 Spring Security,所以在 Spring Boot 项目中我们通常使用的安全框架是 Spring Security...我们并没有配置静态的用户那么该如何登录呢,Spring Boot 为我们提供了一个默认的用户,用户名为:user,密码则是在启动 Spring Boot 项目是随机生成的,我们可以在控制台找到他。...1.2 配置认证 1.2.1 添加静态用户   Spring Boot 除了一些信息写道 yml 配置文件中,其他配置都使用配置类,Spring Security 需要继承 WebSecurityConfigurerAdapter

    2.5K41

    Spring Boot2 系列教程(三十四)Spring Security 添加验证

    登录添加验证码是一个非常常见的需求,网上也有非常成熟的解决方案,其实,要是自己自定义登录实现这个并不难,但是如果需要在 Spring Security 框架中实现这个功能,还得稍费一点功夫,本文就和小伙伴来分享下在...Spring Security 框架中如何添加验证码。...关于 Spring Security 基本配置,这里就不再多说,小伙伴有不懂的可以参考 http://springboot.javaboy.org/,本文主要来看如何加入验证码功能。...POST,并且请求地址是 /doLogin 时,获取参数中的 code 字段值,该字段保存了用户从前端页面传来的验证码,然后获取 session 中保存的验证码,如果用户没有传来验证码,则抛出验证码不能为空异常...12、Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景 13、Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理 14、Spring

    1.3K20

    Security安全认证 | Spring Boot如何集成Security实现安全认证

    前面介绍了Spring Boot 使用JWT实现Token验证,其实Spring Boot 有完整的安全认证框架:Spring Security。...二、Spring BootSecurity的支持 虽然,在Spring Boot出现之前,Spring Security已经发展多年,但是使用并不广泛。...随着Spring Boot的出现,Spring BootSpring Security 提供了自动化配置方案,可以零配置使用 Spring Security。...四、登录验证 前面演示了在Spring Boot项目中集成Spring Security 实现简单的登录验证功能,在实际项目使用过程中,可能有的功能页面不需要进行登录验证,而有的功能页面只有进行登录验证才能访问...最后 以上,我们就把Spring Boot如何集成Security实现安全认证介绍完了。

    1.1K30

    Spring Boot2 系列教程(三十八)Spring Security 非法请求直接返回 JSON

    关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring Security!...Spring Security 登录添加验证码 SpringSecurity 登录使用 JSON 格式数据 Spring Security 中的角色继承问题 Spring Security使用 JWT...Spring Security 结合 OAuth2 不过,今天要和小伙伴们聊一聊 Spring Security 中的另外一个问题,那就是在 Spring Security 中未获认证的请求默认会重定向到登录页...,但是在前后端分离的登录中,这个默认行为则显得非常不合适,今天我们主要来看看如何实现未获认证的请求直接返回 JSON ,而不是重定向到登录页面。...预计 12 月份,微人事的 Spring Boot 版本会升级到目前最新版,请小伙伴们留意哦。

    1.4K40

    Spring SecuritySpring Boot使用 OAuth2【分布式】

    Spring-Security-OAuth2 是对 OAuth2 的一种实现,并且跟 Spring Security 相辅相成,与 Spring Cloud 体系的集成也非常便利,最终使用它实现分布式认证授权解决方案...♞ authorities:此客户端可以使用的权限【基于Spring Security authorities】。   ...♞ /oauth/token_key:提供公有密匙的端点,如果你使用JWT令牌的话。 需要注意的是授权端点这个 URL 应该被 Spring Security 保护起来只供授权用户访问。...♞ tokenStore:TokenStore 类的实例,指定令牌如何访问,与 tokenServices 配置可选   ♞ resourceld:这个资源服务的 id,这个属性是可选的,但是推荐设置并在授权服务中进行验证...其他的拓展属性例如 tokenExtractor 令牌提取器用来提取请求中的令牌,HttpSecurity 配置与 Spring Security 类似。

    7.1K41

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

    在上一篇我们对Keycloak的常用配置进行了熟悉,今天我们来对Keycloak适配Spring Security的执行流程做一个分析,简单了解一下其定制的一些Spring Security过滤器。.../admin/foo的执行流程 在适配了KeycloakSpring SecuritySpring Boot应用中,我编写了一个/admin/foo的接口并对这个接口进行了权限配置: @Override...KeycloakPreAuthActionsFilter 这个过滤器的作用是暴露一个Keycloak适配器对象PreAuthActionsHandler给Spring Security。...Keycloak Spring Security Adapter的运行流程如果你想搞清楚,最好是自己先试一试。...Keycloak的流程简单了解一下就好,感觉非常平淡无奇,大部分也没有定制化的需要,个人觉得重心其实不在这里,如何根据业务定制Keycloak的用户管理、角色管理等一系列管理API才是使用好它的关键。

    1.9K20

    spring mvc 使用@notNull 注解验证请求参数

    spring mvc 使用@notNull 注解验证请求参数 使用方式 @NotNull @Min @valid 验证生效 进阶 注解接口 校验逻辑实现 自定义注解使用 其他校验注解 处理请求时,...有些参数是必传或者必须遵循某些规则的, 如果针对每个请求都写一遍验证的话相当繁琐, 而且代码维护起来也麻烦, 正好框架将参数校验的功能抽象处理啊了, 我们可以利用这个完成80%的校验场景 使用方式...使用起来很简单, 只需要加上几个注解即可 @NotNull 在需要验证的非空字段前面加上@NotNull注解(注解还可设置提示语), 如下 @Min 有写数值类型的需要限制范围, 例如: 时间需要大于...0 @valid 在需要校验的接口的入参前加上@valid注解 验证生效 这两个地方加上注解就可以了 进阶 有时候默认的非空或者范围校验不能满足部分定制化的需求 我们可以通过自定义校验注解来按我们的凡是校验数据...else { return JudgeUtil.equals(value, checkEvaluationKey); } } } 自定义注解使用

    1.4K10

    Spring Boot 如何设置支持跨域请求

    现代浏览器出于安全的考虑, HTTP 请求时必须遵守同源策略,否则就是跨域的 HTTP 请求,默认情况下是被禁止的,IP(域名)不同、或者端口不同、协议不同(比如 HTTP、HTTPS)都会造成跨域问题...一般前端的解决方案有: 使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建标签,然后利用的 SRC 不受同源策略约束来跨域获取数据...利用反应代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后端,通过后端请求转发来避免跨域的访问。 ---- 后来 HTML5 支持了 CORS 协议。...只能同源使用的限制。...前端使用了 CORS 协议,就需要后端设置支持非同源的请求Spring Boot 设置支持非同源的请求有两种方式。 配置 CorsFilter。

    66620

    Keycloak Spring Security适配器的常用配置

    在上一篇Keycloak系列文章中,我们把KeycloakSpring Security成功适配,其中用了一个keycloak.json的配置。...Keycloak适配器的常用属性 在Spring Security集成Keycloak 适配器时需要引入一些额外的配置属性。一般我们会把它配置到Spring Boot的配置文件中。...ssl-required Keycloak 服务器的通信使用HTTPS的范围,是可选的,有三个选项: external,默认值,表示外部的请求都必须使用HTTPS。...如果启用,适配器将不会尝试对用户进行身份验证,而只会验证不记名令牌。如果用户请求资源时没有携带Bearer Token将会401。这是可选的。默认值为false。...下一篇我将对Keycloak Spring Security认证授权的流程作出一个分析。

    2.5K51
    领券