概述
CAS客户端的配置,使用java config的方式
一、建一个类继承WebSecurityConfigurerAdapter,并且给该类加注解@EnableWebSecurity。这个类同时也是Spring Security认证相关的类,其中的configure方法就是对HTTP请求设置认证规则的。
@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.anyRequest().authenticated() .and() // 登录认证例外处理入口为cas入口 .exceptionHandling().authenticationEntryPoint(casEntryPoint()) .and() // 登录CAS认证过滤器 .addFilter(casFilter()); }
二、org.springframework.security.cas.ServiceProperties
定义这个Bean的作用是配置CAS server的相关信息
<span style="white-space:pre"> </span>@Bean
ServiceProperties serviceProperties() {
ServiceProperties serviceProperties = new ServiceProperties();
// 验证ST的CAS server url:被CasAuthenticationFilter监听的URL
serviceProperties.setService("https://127.0.0.1/cas/validate/ticket");
// sendRenew默认是false,true则意味着不允许单点登录,用户需要重新输入用户名密码以验证
// 在安全级别要求比较高的情况下可以使用
serviceProperties.setSendRenew(false);
// 认证所有的
serviceProperties.setAuthenticateAllArtifacts(true);
return serviceProperties;
}
XML的配置方法
<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
<span style="white-space:pre"> </span><property name="service" value="https://localhost:8443/cas-sample/login/cas"/>
<span style="white-space:pre"> </span><property name="sendRenew" value="false"/>
</bean>
// 它包含的属性可以定制一些如认证成功和失败后的行为
@Bean
CasAuthenticationFilter casFilter() {
CasAuthenticationFilter casFilter = new CasAuthenticationFilter();
casFilter.setAuthenticationManager(authenticationManager);
// ServiceAuthenticationDetailsSource: Provides an additional details object for a given web request.
// casFilter.setAuthenticationDetailsSource(new ServiceAuthenticationDetailsSource(serviceProperties()));
return casFilter;
}
// 指定使用认证的入口:CAS server
@Bean
CasAuthenticationEntryPoint casEntryPoint() {
CasAuthenticationEntryPoint casEntryPoint = new CasAuthenticationEntryPoint();
// This is where the user’s browser will be redirected if no ST
casEntryPoint.setLoginUrl("https://127.0.0.1:8080/cas/entrypoint");
// provides the URL to the CAS server
casEntryPoint.setServiceProperties(serviceProperties());
return casEntryPoint;
}
// CasAuthenticationProvider使用UserDetailsService来保存用户权限
@Bean
CasAuthenticationProvider casAuthenticationProvider() {
CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider();
casAuthenticationProvider.setAuthenticationUserDetailsService(userDetailsByNameServiceWrapper());
casAuthenticationProvider.setServiceProperties(serviceProperties());
// ST验证器
casAuthenticationProvider.setTicketValidator(ticketValidator());
// key is an_id_for_this_auth_provider_only,这个大概就是...
String key = UUID.randomUUID().toString();
System.out.println("----------------CasAuthenticationProvider的key是:"+key);
casAuthenticationProvider.setKey(key);
return casAuthenticationProvider;
}
@Bean
UserDetailsByNameServiceWrapper<CasAssertionAuthenticationToken> userDetailsByNameServiceWrapper() {
UserDetailsByNameServiceWrapper<CasAssertionAuthenticationToken> userDetailsByNameServiceWrapper = new UserDetailsByNameServiceWrapper<CasAssertionAuthenticationToken>(userDetailsService);
return userDetailsByNameServiceWrapper;
}
// 定义CAS server的ticket验证器,参数是CAS server的url前缀
@Bean
Cas20ServiceTicketValidator ticketValidator() {
// 参数是 CAS server url prefix 前缀
Cas20ServiceTicketValidator ticketValidator = new Cas20ServiceTicketValidator("https://127.0.0.1:8080/cas");
return ticketValidator;
}
最后
以上就是满意鸵鸟为你收集整理的CAS client客户端的配置,使用java config的方式的全部内容,希望文章能够帮你解决CAS client客户端的配置,使用java config的方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复