我是靠谱客的博主 满意鸵鸟,最近开发中收集的这篇文章主要介绍CAS client客户端的配置,使用java config的方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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的方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部