CAS代理服务配置(二)
四、测试页面
在proxy.test.com下部署个index.jsp,代码如下:
?
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="utf-8"%><%@ page import="org.jasig.cas.client.validation.*,org.jasig.cas.client.util.*,org.jasig.cas.client.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>client one</title> </head> <body> sso cas client one !!! 单点登陆客户端一 <br> <p>hello : ${_const_cas_assertion_.principal.name}</p> <a href="http://backend.test.com/personal">个人中心</a> </body> <script type="text/javascript">$={isIE : /MSIE/i.test(navigator.userAgent),json2str:function(o,f){var r = [];if(o===undefined || o===null) return "null";if(typeof o =="string") return """+o.replace(/([\'"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+""";if(typeof o == "object"){if(!o.sort){for(var i in o){r.push((f?""" + i+"":":i+":")+this.json2str(o[i],f));}if(this.isIE && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString))r.push("toString:"+o.toString.toString());r="{"+r.join()+"}";}else{for(var i =0;i<o.length;i++)r.push(this.json2str(o[i],f));r="["+r.join()+"]";}return r;};return o.toString();}}function showmsg(e){alert($.json2str(e));} </script> <% String serviceUrl = "http://backend.test.com/test.do?jsback=showmsg"; final Assertion assertion=(Assertion)session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION); final String proxyTicket = assertion.getPrincipal().getProxyTicketFor(serviceUrl); request.setAttribute("serviceUrl",serviceUrl); request.setAttribute("proxyTicket",proxyTicket);%> <script type="text/javascript" src="${serviceUrl}&ticket=${proxyTicket}"></script></html>
?说明:1.http://backend.test.com/personal、http://backend.test.com/test.do两个接口多需要身份,一个返回页面,一个返回json
2.该页面测试重定向sso.test.com进行单点登陆
3.页面调用了backend service的一个接口,并将结果显示(cas2.0代理认证模式,此时用户并没有打开backend service)
4.点击“个人中心”进入backend service自动有身份(cas 1.0模式)
?
?