SpringBoot
集成 CAS 单点登录的步骤如下:
1. 配置
CAS服务器
首先需要配置
CAS服务器,包括安装和配置,这里不再赘述。
2. 引入
CAS客户端依赖
在
SpringBoot项目中引入
CAS客户端依赖,例如:
<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.6.</version></dependency>
3. 配置
CAS客户端
在
SpringBoot项目中配置
CAS客户端,包括
CAS服务器地址、
CAS客户端地址、
CAS登录地址等,例如:
cas.server.url=https://cas.example.com/cas cas.client.host.url=https://example.comcas.login.url=https://cas.example.com/cas/login
4. 配置
SpringSecurity
在
SpringBoot项目中配置
SpringSecurity,包括登录页面、登录成功后的跳转页面等,例如:
@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {@AutowiredprivateCasAuthenticationProvidercasAuthenticationProvider;@AutowiredprivateCasAuthenticationEntryPointcasAuthenticationEntryPoint;@AutowiredprivateCasAuthenticationFiltercasAuthenticationFilter;@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/login").permitAll().anyRequest().authenticated().and().exceptionHandling().authenticationEntryPoint(casAuthenticationEntryPoint).and().addFilter(casAuthenticationFilter).logout().logoutUrl("/logout").logoutSuccessUrl("/").invalidateHttpSession(true).deleteCookies("JSESSIONID").and().csrf().disable();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.authenticationProvider(casAuthenticationProvider);}}
5. 配置
CAS认证提供者
在
SpringBoot项目中配置
CAS认证提供者,例如:
@Configurationpublic classCasConfig {@Value("${cas.server.url}")private StringcasServerUrl;@Value("${cas.client.host.url}")private Stringcas ClientHostUrl;@Value("${cas.login.url}")private StringcasLoginUrl;@BeanpublicCasAuthenticationEntryPointcasAuthenticationEntryPoint() {CasAuthenticationEntryPoint entryPoint = newCasAuthenticationEntryPoint();entryPoint.setLoginUrl(casLoginUrl);entryPoint.setServiceProperties(serviceProperties());return entryPoint;}@Beanpublic ServiceProperties serviceProperties() {ServiceProperties serviceProperties = new ServiceProperties();serviceProperties.setService(cas ClientHostUrl + "/login/cas");serviceProperties.setSendRenew(false);return serviceProperties;}@BeanpublicCasAuthenticationFiltercasAuthenticationFilter() throws Exception {CasAuthenticationFilter filter = newCasAuthenticationFilter();filter.setAuthenticationManager(authenticationManager());return filter;}@BeanpublicCasAuthenticationProvidercasAuthenticationProvider() {CasAuthenticationProvider provider = newCasAuthenticationProvider();provider.setServiceProperties(serviceProperties());provider.setTicketValidator(newCas30ServiceTicketValidator(casServerUrl));provider.setUserDetailsService(userDetailsService());provider.setKey("casAuthProviderKey");return provider;}@Beanpublic UserDetailsService userDetailsService() {return new InMemoryUserDetailsManager(Collections.emptyList());}@Beanpublic AuthenticationManager authenticationManager() throws Exception {return new ProviderManager(Collections.singletonList(casAuthenticationProvider()));}}
6. 编写登录页面
在
SpringBoot项目中编写登录页面,例如:
<!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. 运行项目
最后运行
SpringBoot项目,访问登录页面,输入
CAS服务器的用户名和密码,即可实现
CAS 单点登录。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/9517.html