CAS SSO对手机应用支持的一种思路

原文地址: http://architecture3.riaos.com/?p=3095368

手机和桌面应用访问CAS,我们不能直接使用CAS提供的web api。不过CAS提供了一个插件,叫CAS Restlet Integration,该插件提供了CAS API的Restful接口,这个接口可以被程序级调用,这样就给我们手机应用认证带来一种思路。首先,手机应用可以程序方式CAS认证服务器,获得TGT和ST,然后访问配置好CAS Client的应用Server,Server与CAS进行通信验证ST的有效性,如果有效即登录成功。登出处理比较简单,直接访问CAS
API删除TGT即可,CAS会通知删除所有登录过应用的登录信息。

 

对 CAS Server,我们要安装Restlet Integration插件,

以CAS Server 3.4.5为例(CAS Server的基本配置参见 CAS Server 部署基本步骤),首先下载CAS Restlet Integration插件包及其依赖包(http://mvnrepository.com/artifact/org.jasig.cas/cas-server-integration-restlet/3.4.5),所需包名列表如下:

cas-server-integration-restlet-3.4.5.jar
cglib-nodep-2.1_3.jar
com.noelios.restlet.ext.servlet-1.1.1.jar
com.noelios.restlet.ext.spring-1.1.1.jar
com.noelios.restlet-1.1.1.jar
org.restlet.ext.spring-1.1.1.jar
org.restlet-1.1.1.jar

然后在web.xml中加入:

 

	<!--   for restful api -->

	<servlet>
    	<servlet-name>restlet</servlet-name>
    	<servlet-class>com.noelios.restlet.ext.spring.RestletFrameworkServlet</servlet-class>
    	<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
    	<servlet-name>restlet</servlet-name>
    	<url-pattern>/v1/*</url-pattern>
	</servlet-mapping>

 程序获取TGT,ST和Logout,我们可以参考官方的例子:

  

/*   获取tgt和st的API接口是 /v1/tickets */
	private String getTicketGrantingTicket(final String server,final String username, final String password) {
		final HttpClient client = new HttpClient();
		final PostMethod post = new PostMethod(server);
		post.setRequestBody(new NameValuePair[] {
				new NameValuePair("username", username),
				new NameValuePair("password", password) });
		try {
			client.executeMethod(post);
			final String response = post.getResponseBodyAsString();
			switch (post.getStatusCode()) {
				case 200:
					return response;
				default:
					break;
			}
		} catch (Exception e) {

                  } finally {
			post.releaseConnection();
		}
		return null;
	}

	@SuppressWarnings("unchecked")
	private String getServiceTicket(final String server,final String ticketGrantingTicket, final String service) {
		if (ticketGrantingTicket == null) return null;
		final HttpClient client = new HttpClient();
		final PostMethod post = new PostMethod(server + "/"+ ticketGrantingTicket);
		post.setRequestBody(new NameValuePair[] { new NameValuePair("service",service) });
		try {
			client.executeMethod(post);
			final String response = post.getResponseBodyAsString();
			switch (post.getStatusCode()) {
				case 200:
					return response;
				default:
					break;
			}
		} catch (Exception e) {

		} finally {
			post.releaseConnection();
		}
		return null;
	}

	/*   删除tgt的API接口是 /v1/tickets/<tgt> ,delete方法 */

	public String logout(String tgt) {

		String result = "success";
		final HttpClient client = new HttpClient();
       		final DeleteMethod delete = new DeleteMethod(server + "/" + tgt);
       		try {
        			client.executeMethod(delete);
            		final String response = delete.getResponseBodyAsString();
           		switch (delete.getStatusCode()) {
               			case 200:
                	                  		break;
                			default:
                	                   	result = "error";
					break;
            		}
        		} catch (IOException e) {
        	        		result = "error";

		}finally{
            		delete.releaseConnection();
       		}
        		return result;
	}

                  

	
时间: 2025-01-20 15:38:55

CAS SSO对手机应用支持的一种思路的相关文章

单点登录之CAS SSO从入门到精通(第二天)

啊......沙滩,阳光,笔记本往膝上一搁,开始写博客.第一次没在国内过年,避开了吃吃吃,感觉真好,人也觉得轻松多了. 上次说到了CAS SSO最基本的使用方法,并且我们结合了一个数据库表来实现了我们自定义用户名和密码的单点登录功能.今天我们将要开始把我们的CAS SSO一步步往更深更专业的层次推进下去,我们先来看一下CAS SSO在结合WINDOWS AD域(此处我们使用open-ldap)来实现这个WINDOWS AD域的单点登录.即如何把我们的单点登录和巳有域帐号进行一下结合. 安装ope

单点登录之CAS SSO从入门到精通(第一天)

啊......it's quite a long time. 好久没更新博客了,有一年之久了,一直在忙于公司的一些项目.2014年到2015年工作太忙,我也接触到了新的领域,认识了新的同事. 对于一些经常跟我博客的读者们深深说一声抱歉. 同时,也在新的一年将到之际,祝各位新春愉快,羊年洋洋洋. 好了,废话少说,开始我们架构师之路的新的历程,SSO-单点登录. 另外想以此SSO系列教程献给我那身体不太好的同事-小白同志,祝小白同志身体一直健康                            

单点登录之CAS SSO从入门到精通(第三天)

开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 在CAS SSO登录界面增加我们自定义的登录用元素 使用LDAP带出登录用户在LDAP内存储的更多的信息 实现CAS SSO支持多租户登录的功能 好,开始正文! 正文 上次我们说到了CAS SSO的一些基本用法如:连数据库怎么用,连LDAP怎么用,这次我们要来讲一个网上几乎没有人去过多涉及到的一个问题即:在

.net cas sso 循环重定向问题

问题描述 .net cas sso 循环重定向问题 看了"吕震宇"博客,跟着配置,还是出现了""循环重定向问题""希望大家不惜赐教.

cas sso 配置了,登录有通过数据库,但是跳转失败

问题描述 cas sso 配置了,登录有通过数据库,但是跳转失败 1.生成安全证书:运行cmd 切换到tomcat的目录下:输入命令 " keytool -genkey -alias localhost -keyalg RSA -storepass localhost -keystore D:ssotomcat-caslocalhost.keystore -validity 3600 " //此时会生成别名为abc的abc.keystore 文件. 密码是abc 123 导出证书到ke

java web-请教一下UC手机版支持target=_blank吗?

问题描述 请教一下UC手机版支持target=_blank吗? 各位大神,我在开发移动端页面时,给HTML中的一个form的target属性设置为_blank,但是表单submit时, 在其他移动端浏览器上,都能打开新窗口,但是唯独在uc手机版上测试时,发现浏览器没有打开新窗口, 而是刷新了原来的页面,我将UC浏览器设置为允许弹框也不行啊,各位有没有遇到过类似的,怎么解决的啊 解决方案 UC不在手页考虑内,,因为它有自己的兼容模式,,甚至会自己替换代码来实现它的兼容..

cas sso登录服务器跳转客户端出现异常

问题描述 cas sso登录服务器跳转客户端出现异常 2C 最近在弄一个cas单点登录,但是后面出现服务器跳客户端的时候有的浏览器能正常显示,有的浏览器样式显示不出来,之前ie和谷歌可以显示,火狐不行,今天有出现谷歌不行,IE和火狐可以,请问一下是什么问题呢就象这样,我在怀疑跟客户端的web.xml有关,再附上web.xml配置,<!-- ========================开始======================== --> <!--用于退出,该过滤器用于实现登出功

发布-Google Play 如何让手机软件支持平板上显示

问题描述 Google Play 如何让手机软件支持平板上显示 各位你好 首先我开发了一个手机程序按照一般流程上传到了play上了, 用户在手机上可以搜索到软件,但是用平板电脑却搜索不到, 请问这是我设置问题么?怎么设置才能解决这个问题? 谢谢大家的帮忙.

手机不支持jar格式文件

问题描述 操作系统为Android2.1(Eclair)的多普达手机不支持格式为jar的文件安装,请教高手解决.急! 解决方案 解决方案二:如果手机不支持...只能买个支持java的新的了...解决方案三:android的好像有个JAVA模拟器的app去找找不过好像效果不太好换个手机