CAS单点登录源码解析之【集成新浪腾讯微博】

前期准备

已经搭建好了集成了CAS客户端的应用系统和CAS服务器

1.应用系统webapp(http://127.0.0.1:8090/webapp/main.do)
2.CAS单点登录服务器端(http://127.0.0.1:8081/cas-server/)
        本次讨论包括CAS单点登录服务器端的部分源码,以及在此基础上进行新浪微博和腾讯微博集成的二次开发,因此需要修改部分CAS服务器端的源码,源码部分的修改在下面进行讨论。 关于CAS客户端、CAS服务器端、CAS单点登出和CAS用户认证的源码分析,请参考另外四篇文章
CAS客户端: http://blog.csdn.net/dovejing/article/details/44426547
CAS服务器端: http://blog.csdn.net/dovejing/article/details/44523545

CAS单点登出:http://blog.csdn.net/dovejing/article/details/44675647

CAS用户认证:http://blog.csdn.net/dovejing/article/details/44754307

/WEB-INF/spring-configuration/applicationContext.xml部分代码

<!-- 新浪微博OAUTH -->
<bean id="sinaWeibo" class="org.jasig.cas.support.oauth.sina.SinaWeiboProvider">
	<property name="key" value="${sina_appkey}" />
	<property name="secret" value="${sina_appsecret}" />
	<property name="callbackUrl" value="${callback_url}" />
</bean>
	
<!-- 腾讯微博OAUTH -->
<bean id="tencentWeibo" class="org.jasig.cas.support.oauth.tencent.TencentWeiboProvider">
	<property name="key" value="${tencent_appkey}" />
	<property name="secret" value="${tencent_appsecret}"/>
	<property name="callbackUrl" value="${callback_url}" />
</bean>

cas_config.properties代码

sina_appkey=
sina_appsecret=
tencent_appkey=
tencent_appsecret=
callback_url=http://127.0.0.1:8081/cas-server/login

所有的OAuth提供者,必须定义在applicationContext.xml文件中,此处配置了新浪微博和腾讯微博。cas_config.properties配置文件中,配置新浪微博和腾讯微博的申请信息,callback_url属性为CAS单点登录服务器端的地址。

/WEB-INF/spring-configuration/applicationContext.xml部分代码

<bean id="oauthConfig" class="org.jasig.cas.support.oauth.OAuthConfiguration">
	<property name="loginUrl" value="http://127.0.0.1:8081/cas-server/login" />
	<property name="providers">
		<list>
			<ref bean="sinaWeibo" />
			<ref bean="tencentWeibo" />
		</list>
	</property>
</bean>

<bean id="authenticationManager" class="org.jasig.cas.authentication.AuthenticationManagerImpl">	
	<property name="authenticationHandlers">
		<list>
			<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
				p:httpClient-ref="httpClient" />
			
			<!-- 此处为增加部分 start -->
			<bean class="org.jasig.cas.support.oauth.authentication.handler.support.QueryDatabaseOAuthAuthenticationHandler"> 
				<property name="configuration" ref="oauthConfig" />   
				<property name="dataSource" ref="dataSource"></property>
				<property name="sql" value=""></property>
				<property name="userSql" value=""></property>
			</bean>
			<!-- 此处为增加部分 end -->
		</list>
	</property>
</bean>

在applicationContext.xml文件中配置OAuthConfig信息,其中loginUrl属性为CAS单点登录服务器端的地址(与callback_url属性值一致),providers属性引用新浪微博(sinaWeibo)和腾讯微博(tencentWeibo)。同时增加新浪微博和腾讯微博的认证器配置QueryDatabaseOAuthAuthenticationHandler。其中sql和userSql

<action-state id="oauthAction"> 
	<evaluate expression="oauthAction" /> 
	<transition on="success" to="sendTicketGrantingTicket" /> 
	<transition on="error" to="serviceUntiyAuthCheck" />
</action-state>


<bean class="org.jasig.cas.support.oauth.authentication.principal.OAuthCredentialsToPrincipalResolver" >
	<property name="attributeRepository" ref="attributeRepository" />
</bean>


最后,在应用系统的登录页面增加新浪微博和腾讯微博的登录链接。

<a href="${SinaWeiboProviderUrl}">新浪微博</a>  <a href="${TencentWeiboProviderUrl}">腾讯微博</a>

至此,CAS的单点登录与新浪微博和腾讯微博的集成已经完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值