`
liunancun
  • 浏览: 34266 次
社区版块
存档分类
最新评论

Spring Boot Security CAS 集成

 
阅读更多
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-cas</artifactId>
</dependency>


@SpringBootApplication
@RestController
public class DemoApplication extends WebSecurityConfigurerAdapter {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
		auth.authenticationProvider(casAuthenticationProvider());
	}

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.exceptionHandling().authenticationEntryPoint(casEntryPoint()).and().addFilter(casFilter())
				.authorizeRequests().anyRequest().authenticated();
	}

	@Bean
	public CasAuthenticationProvider casAuthenticationProvider() {
		CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
		casAuthenticationProvider.setAuthenticationUserDetailsService(token -> {
			return new User(token.getName(), "", Collections.singletonList(new SimpleGrantedAuthority("user")));
		});
		casAuthenticationProvider.setTicketValidator(new Cas30ServiceTicketValidator("http://192.168.99.230/sso"));
		casAuthenticationProvider.setKey("an_id_for_this_auth_provider_only");
		return casAuthenticationProvider;
	}

	@Bean
	public ServiceProperties serviceProperties() {
		ServiceProperties serviceProperties = new ServiceProperties();
		serviceProperties.setService("http://localhost:8080/login/cas");
		return serviceProperties;
	}

	@Bean
	public CasAuthenticationEntryPoint casEntryPoint() {
		CasAuthenticationEntryPoint casEntryPoint = new CasAuthenticationEntryPoint();
		casEntryPoint.setLoginUrl("http://192.168.99.230/sso/login");
		casEntryPoint.setServiceProperties(serviceProperties());
		return casEntryPoint;
	}

	@Bean
	public CasAuthenticationFilter casFilter() throws Exception {
		CasAuthenticationFilter casFilter = new CasAuthenticationFilter();
		casFilter.setAuthenticationManager(authenticationManager());
		casFilter.setAuthenticationDetailsSource(new ServiceAuthenticationDetailsSource(serviceProperties()));
		return casFilter;
	}

	@GetMapping("hello")
	public String hello(HttpServletResponse response) {
		return "hello";
	}
}


参考官方文档:
https://docs.spring.io/spring-security/site/docs/5.2.1.BUILD-SNAPSHOT/reference/htmlsingle/#cas

@SpringBootApplication
@RestController
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@GetMapping("hello")
	public String hello() {
		return "hello";
	}

	@Bean
	SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

		ServiceProperties serviceProperties = new ServiceProperties();
		serviceProperties.setService("http://localhost:8080/login/cas");

		CasAuthenticationEntryPoint casEntryPoint = new CasAuthenticationEntryPoint();
		casEntryPoint.setLoginUrl("https://localhost:8443/sso/login");
		casEntryPoint.setServiceProperties(serviceProperties);

		CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
		casAuthenticationProvider.setAuthenticationUserDetailsService(token -> {
			System.out.println(token);
			return new User(token.getName(), "", Collections.singletonList(new SimpleGrantedAuthority("user")));
		});
		casAuthenticationProvider
				.setTicketValidator(new Cas30ServiceTicketValidator("https://localhost:8443/sso"));
		casAuthenticationProvider.setKey("an_id_for_this_auth_provider_only");

		CasAuthenticationFilter casFilter = new CasAuthenticationFilter();
		casFilter.setAuthenticationManager(new ProviderManager(casAuthenticationProvider));
		casFilter.setAuthenticationDetailsSource(new ServiceAuthenticationDetailsSource(serviceProperties));

		http.authorizeHttpRequests(authorize -> authorize.anyRequest().authenticated())
				.exceptionHandling(exception -> exception.authenticationEntryPoint(casEntryPoint)).addFilter(casFilter);

		return http.build();
	}
}
分享到:
评论

相关推荐

    springboot+security+cas集成demo

    "springboot+security+cas集成demo"的目的是展示如何在Spring Boot应用中集成Spring Security和CAS,实现SSO功能。以下是一些关键步骤: 1. **配置CAS客户端**:在Spring Boot应用中,我们需要引入CAS客户端库,...

    spring boot整合CAS Client实现单点登陆验证的示例

    Spring Boot 整合 CAS Client 实现单点登录验证的示例 Spring Boot 整合 CAS Client 是一种流行的解决方案,用于实现单点登录(Single Sign-On,简称 SSO)。在多个应用系统中,用户只需要登录一次就可以访问所有...

    详解Spring Boot 使用Spring security 集成CAS

    Spring Boot 使用 Spring Security 集成 CAS Spring Boot 是一个基于 Java 的开源框架,用于快速构建生产级别的应用程序。Spring Security 是一个基于 Spring 的安全框架,提供了身份验证、授权和访问控制等功能。...

    SpringBoot+Security+Cas

    这个Demo是为那些希望了解如何在Spring Boot应用中整合Spring Security和CAS(Central Authentication Service)服务的开发者准备的。下面将详细介绍这三个核心组件以及它们如何协同工作。 **Spring Boot** Spring ...

    spring boot整合CAS配置详解

    Spring Boot 整合 CAS 配置详解 ...我们首先介绍了 CAS 的概念,然后介绍了如何在 Spring Boot 中配置 CAS 客户端和 Spring Security。最后,我们总结了 CAS 客户端配置和 Spring Security 配置的详细信息。

    前后端分离集成cas

    本项目是关于前后端分离集成CAS(Central Authentication Service)的一个实例,主要使用了Spring Boot、Shiro、Oracle数据库以及Vue.js等技术。 首先,Spring Boot是基于Spring框架的轻量级开发工具,它简化了新...

    cas-security-spring-boot-starter:用于Apereo CAS客户端的Spring Boot Starter与Spring Security完全集成

    Spring Security CAS启动器 ... &lt; artifactId&gt;cas-security-spring-boot-starter &lt; version&gt;1.0.6 但是请注意,如果您来自0.xx版本,则1.xx版本会有一些重大更改。 请检出 ,尤其是breaking changes

    Spring Security OAuth2集成短信验证码登录以及第三方登录

    Spring Security OAuth2是基于Spring Cloud/Spring Boot环境下使用OAuth2.0的解决方案,为开发者提供了全套的组件来支持OAuth2.0认证。然而,在开发过程中,我们会发现由于Spring Security OAuth2的组件特别全面,...

    spring boot 集成kisso单点登入

    使用Spring Security或者Spring Boot的内置安全机制来控制访问权限。设置URL的访问规则,例如哪些URL需要用户登录后才能访问,哪些是公开的。 7. **注销功能** 实现单点注销功能,当用户在任一应用中注销时,所有...

    (源码)基于Spring Boot和Vue的CAS单点登录集成系统.zip

    1. CAS集成 添加CAS依赖,配置CAS服务地址和应用访问地址。 修改LoginUser.java以支持CAS认证的authorities属性。 添加CasProperties.java读取CAS配置信息。 添加CasUserDetailsService.java用于加载用户信息。 ...

    spring security3 中文版本

    - `CAS-spring-security-cas-client.jar`:支持 CAS 协议的单点登录功能。 - `OpenID-spring-security-openid.jar`:支持 OpenID 身份验证。 - **获得源代码**:可以从 GitHub 或 Maven 仓库获取 Spring Security ...

    cas与springboot集成

    Spring Security是Spring生态中的一个强大安全框架,它与CAS集成提供了强大的安全控制。通过配置Spring Security,我们可以实现对特定URL的保护、权限管理、会话管理等功能。在Spring Boot应用中,我们可以利用`@...

    spring boot 实现SSO单点登陆

    spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource 127.0.0.1 sso-tmall 127.0.0.1 sso-taobao windows系统的路径在C:\WINDOWS\system...

    cas 和spring security 单点登录 配置

    1. **添加依赖**:在你的Spring Boot项目中,引入Spring Security和CAS客户端的依赖库,如`spring-security-cas`。 2. **配置Spring Security**:在`security.xml`或使用Java配置类,配置Spring Security以集成CAS...

    Spring Security最新文档(英文)

    这包括使用Spring Boot与Maven或Gradle一起,以及在没有Spring Boot的情况下如何进行集成。 7. **项目模块介绍**:在文档的模块章节中,逐一介绍了各个模块的用途和作用,这对于理解框架的组成和在特定场景下选择...

    spring-security-pac4j:用于Spring安全性的pac4j安全性库:OAuth,CAS,SAML,OpenID Connect,LDAP,JWT。

    spring-security-pac4j项目是一个用于Spring Security Web应用程序和Web服务(带有或不带有Spring Boot)的简单而强大的安全性库。 它支持身份验证和授权,还支持会话固定和CSRF保护等高级功能。 它基于Java 8,...

    cas 单点登录 demo

    在Spring Boot应用中集成CAS,我们需要: 1. 添加依赖:在`pom.xml`中引入Spring Boot的CAS客户端依赖。 2. 配置CAS服务器地址:在`application.properties`或`application.yml`中设置CAS服务器URL和其他相关配置。 ...

    cas_client_boot_test_demo.

    【标题】"cas_client_boot_test_demo" 指的是一种集成CAS客户端的Spring Boot应用的测试示例。这个项目可能是为了展示如何在Spring Boot应用程序中整合CAS(Central Authentication Service)客户端,以便实现单点...

    SpringBoot整合CAS文件资料

    在client.zip文件中,可能包含了客户端代码示例,这些示例展示了如何在Spring Boot应用中集成CAS的配置和逻辑。你可以解压并研究这些代码,以加深理解。 总的来说,SpringBoot整合CAS是一个涉及Web安全、身份验证和...

    spring-security-reference.pdf

    Spring Boot与Spring Security结合紧密,文档提供了针对Spring Boot 2.0的OAuth2.0登录配置示例。这些示例包括了初始设置、设置重定向URI、配置application.yml文件、启动应用程序以及客户端注册等步骤。 总而言之...

Global site tag (gtag.js) - Google Analytics