当前位置:网站首页 > 技术博客 > 正文

单点登录cas原理



Spring

Boot

集成 CAS 单点登录

的步骤如下:

1. 配置

CAS

服务器

首先需要配置

CAS

服务器,包括安装和配置,这里不再赘述。

2. 引入

CAS

客户端依赖

Spring

Boot项目中引入

CAS

客户端依赖,例如:

 <dependency> <groupId>org.jasig. cas . client </groupId> <artifactId> cas - client -core</artifactId> <version>3.6.</version> </dependency> 

3. 配置

CAS

客户端

Spring

Boot项目中配置

CAS

客户端,包括

CAS

服务器地址、

CAS

客户端地址、

CAS

登录地址等,例如:

  cas .server.url=https:// cas .example.com/ cas cas . client .host.url=https://example.com  cas .login.url=https:// cas .example.com/ cas /login 

4. 配置

Spring

Security

Spring

Boot项目中配置

Spring

Security,包括登录页面、登录成功后的跳转页面等,例如:

 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {  @Autowired private Cas AuthenticationProvider cas AuthenticationProvider;  @Autowired private Cas AuthenticationEntryPoint cas AuthenticationEntryPoint;  @Autowired private Cas AuthenticationFilter cas AuthenticationFilter;  @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/login").permitAll() .anyRequest().authenticated() .and() .exceptionHandling() .authenticationEntryPoint( cas AuthenticationEntryPoint) .and() .addFilter( cas AuthenticationFilter) .logout() .logoutUrl("/logout") .logoutSuccessUrl("/") .invalidateHttpSession(true) .deleteCookies("JSESSIONID") .and() .csrf().disable(); }  @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider( cas AuthenticationProvider); } } 

5. 配置

CAS

认证提供者

Spring

Boot项目中配置

CAS

认证提供者,例如:

 @Configuration public class Cas Config {  @Value("${ cas .server.url}") private String cas ServerUrl;  @Value("${ cas . client .host.url}") private String cas Client HostUrl;  @Value("${ cas .login.url}") private String cas LoginUrl;  @Bean public Cas AuthenticationEntryPoint cas AuthenticationEntryPoint() {  Cas AuthenticationEntryPoint entryPoint = new Cas AuthenticationEntryPoint(); entryPoint.setLoginUrl( cas LoginUrl); entryPoint.setServiceProperties(serviceProperties()); return entryPoint; }  @Bean public ServiceProperties serviceProperties() { ServiceProperties serviceProperties = new ServiceProperties(); serviceProperties.setService( cas Client HostUrl + "/login/ cas "); serviceProperties.setSendRenew(false); return serviceProperties; }  @Bean public Cas AuthenticationFilter cas AuthenticationFilter() throws Exception {  Cas AuthenticationFilter filter = new Cas AuthenticationFilter(); filter.setAuthenticationManager(authenticationManager()); return filter; }  @Bean public Cas AuthenticationProvider cas AuthenticationProvider() {  Cas AuthenticationProvider provider = new Cas AuthenticationProvider(); provider.setServiceProperties(serviceProperties()); provider.setTicketValidator(new Cas 30ServiceTicketValidator( cas ServerUrl)); provider.setUserDetailsService(userDetailsService()); provider.setKey(" cas AuthProviderKey"); return provider; }  @Bean public UserDetailsService userDetailsService() { return new InMemoryUserDetailsManager(Collections.emptyList()); }  @Bean public AuthenticationManager authenticationManager() throws Exception { return new ProviderManager(Collections.singletonList( cas AuthenticationProvider())); } } 

6. 编写登录页面

Spring

Boot项目中编写登录页面,例如:

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="/login/ cas " method="post"> <input type="submit" value="Login"> </form> </body> </html> 

7. 运行项目

最后运行

Spring

Boot项目,访问登录页面,输入

CAS

服务器的用户名和密码,即可实现

CAS 单点登录

  • 上一篇: 分布式存储排名前十名
  • 下一篇: xargs参数
  • 版权声明


    相关文章:

  • 分布式存储排名前十名2025-01-16 17:29:59
  • phython基础语法教程2025-01-16 17:29:59
  • 第四届羊城杯2025-01-16 17:29:59
  • 程序员接私活注意事项2025-01-16 17:29:59
  • 多线程的同步和异步的区别2025-01-16 17:29:59
  • xargs参数2025-01-16 17:29:59
  • pcap文件是什么2025-01-16 17:29:59
  • dll反编译2025-01-16 17:29:59
  • densenet算法2025-01-16 17:29:59
  • 结构体C语言2025-01-16 17:29:59