CAS SSO对手机应用支持的一种思路
2013-09-22 23:01
204 查看
原文地址: 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,我们不能直接使用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对手机应用支持的一种思路
- 升级旧Delphi应用转向支持手机的一个思路
- 升级旧Delphi应用转向支持手机的一个思路
- Win10新应用手机伴侣上架 支持手机电脑自由同步
- SpringMVC同时支持多视图(JSP,Velocity,Freemarker等)的一种思路实现
- 一种手机摄像头扫描身份证自动ocr识别技术应用背景
- 一种单片机支持WiFi的应用——SimpleWiFi在单片机中的应用
- 摘抄《手机软件最佳实践》--手机游戏应用的测试思路
- [置顶] 第1讲:LR11.5对手机应用服务测试的支持(一)
- 解决安卓手机不能看chm文件的一种思路
- 一种单片机支持WiFi的应用——SimpleWiFi在单片机中的应用
- 支持手机NFC快捷支付的消费系统应用情况分析
- 内网渗透应用 跨vlan渗透的一种思路
- LR11.5对手机应用服务测试的支持(一)
- 手机控制电脑的一种思路(Python实现)
- 支持公益事业,TechExcel助力中国艾协建设网络和手机应用平台
- 支持手机短信注册的应用(任务吧)源码
- 支持APP手机应用(android和ios)接口调用 传输验证可用 shiro 的 MD5、SHA 等加密
- 内网***应用 跨vlan***的一种思路
- 3ff0 C语言实现一种简单的应用服务器内部数据结构的思路(二)