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;
}
CAS SSO对手机应用支持的一种思路的更多相关文章
- CAS+SSO原理浅谈
http://www.cnblogs.com/yonsin/archive/2009/08/29/1556423.htmlSSO 是一个非常大的主题,我对这个主题有着深深的感受,自从广州 UserGr ...
- 单点登录之CAS SSO从入门到精通(第三天)
开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 ...
- JMeter (2) —— JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial)
JMeter (2) -- JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial) 主要内容 JMeter与WebDriver测试用户登陆以CAS SSO为例 环 ...
- Sahi (3) —— 压力测试Load Test以CAS SSO登陆场景为例(103 Tutorial)
Sahi (3) -- 压力测试Load Test以CAS SSO登陆场景为例(103 Tutorial) jvm版本: 1.8.0_65 sahi版本: Sahi Pro 6.1.0 参考来源: S ...
- CAS SSO单点登录框架介绍
1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...
- 单点登录之 CAS SSO 从入门到精通(第一天)
转自:http://blog.csdn.net/lifetragedy/article/details/43817903 啊......it's quite a long time. 好久没更新博客了 ...
- CAS SSO:汇集配置过程中的错误解决方法
本教程为gevin.me原创文章,转载请注明: CAS SSO:配置过程中的错误解决方法 | Gevin’s Blog 本文将收集在配置CAS SSO遇到的所有错误,希望对大家有帮助,也方便下次搭建的 ...
- [精华][推荐]CAS SSO 单点登录框架学习 环境搭建
1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...
- [精华][推荐]CAS SSO 实现单点登录实例源码
1.修改server.xml文件,如下: 注意: 这里使用的是https的认证方式,需要将这个配置放开,并做如下修改: <Connector port="8443" prot ...
随机推荐
- 理解sparse coding
理解sparse coding 稀疏编码系列: (一)----Spatial Pyramid 小结 (二)----图像的稀疏表示——ScSPM和LLC的总结 (三)----理解sparse codin ...
- Android+Junit单元测试1
学习参考: http://my.oschina.net/liux/blog/52469 http://mobile.51cto.com/android-229614.htm 一,权限配置 <ap ...
- VC 对话框背景颜色、控件颜色(三种方法)
系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色 ...
- RxJava学习(一)
注意:文字和图片转载自抛物线博客 参考:http://gank.io/post/560e15be2dca930e00da1083 RxJava 到底是什么 一个词:异步. RxJava 在 GitHu ...
- RxJava开发精要4 – Observables过滤
原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转 ...
- 虚函数表以及RTTI阅读(阅后焚)
http://blog.csdn.net/haoel/article/details/1948051/ http://www.cnblogs.com/ustc11wj/archive/2012/08/ ...
- matlab 画图
先前讲解了简单绘图方法: http://www.cnblogs.com/youxin/p/3859923.html x = 0:pi/100:2*pi; y = sin(x); plot(x,y)下面 ...
- 【HDOJ】1204 糖果大战
题目本身不难.类似于dp.f(i)表示手中现有i颗糖果赢的概率,则下一局赢的概率是p(1-q),下一局输的概率是q(1-p),下一句平手的概率是1-p(1-q)-q(1-p),平手包括两人均答对或答错 ...
- wzplayer2 for windows ActiveX 试用地址
提供wzplayer2 for windows ActiveX,测试地址:http://www.coolradio.cn/IE.htm 大家使用时候必须允许未签名ActiveX下载和运行,否则将无法正 ...
- Outlook接收qq的邮件
1.先去qq邮箱,设置,账户 开启pop3服务,假如之前开启过,最好关闭之后重新开启 最新版本的必须使用邮箱的独立密码才可以收取邮件 (否则就算你之前开通了,也无法用你的qq账号和密码收取邮件的) 2 ...