迷途书童

敏感、勤学、多思
随笔 - 77, 文章 - 4, 评论 - 86, 引用 - 0
数据加载中……

Integrated cas with liferay

借花献佛:
We found some way that somehow, solves the liferay integration with cas. The solution is this when you login in to liferay just in the try to call the login page of cas manually

1) Change the view.jsp page. make the form method to get
2) change touch_protected.jsp. Add
<% String query=request.getQueryString();%>

3) change touch_protected.jsp again. Add
<body onLoad=”self.location=’<%= CTX_PATH%>/portal/protected?<%=query%>$mode=portal’;”>
We will use this mode later on CAS login page

3) Change top_bar.jsp and add

<c:if test="<%= signedIn %>">
<a href="<%= Http.getProtocol(request) %>://<%= request.getServerName() %>:<%=request.getServerPort()%>/html/common/logout2.jsp" class="bg" ><bean:message key="sign-out" /></a>

</c:if>

4) Change web.xml and add:
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://casserver:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://casserver:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.logout</param-name>
<param-value>https://casserver:8443/cas/logout</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>casserver</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/c/portal/protected/*</url-pattern>
</filter-mapping>

6) We should define a logout2.jsp which calls the cas logout url not liferay logout.

NOW WE SHOULD GO TO CAS-SERVER. We should use the mode paramater here to do some tricks. Remmeber there are other applications that want to use the normal login page, only we(liferay users) need to make a hidden view of this page.

5) change the the login.jsp and header.jsp. You must configure the CAS login page to view itself in while it login page is loaded in liferay. just add this on the header.jsp
String mode="standard";
String username="";
String password="";
String url = request.getParameter("service");
if (!url.equals(null)){
int pos=url.lastIndexOf('?');
int pos1=url.indexOf("mode=portal",pos);
if (pos1!=-1)
{
mode="portal";
}

now use the mode parameter to create a login form which all hidden filed

<%
if (mode.equals("portal"))
{
%>
<script language="JavaScript">
function submitForm() {
document.login_form.username.value ="<%=username%>";
document.login_form.password.value ="<%=password%>";
document.login_form.submit();
}
</script>

<body onLoad="submitForm()" >
<form method="post" name="login_form">
<input type="hidden" name="username" maxlength="20" size="12" dir="ltr">
<input type="hidden" name="password" maxlength="20" size="14" dir="ltr">
<input type="hidden" name="lt" value="<%= request.getAttribute("edu.yale.its.tp.cas.lt") %>" />
</form>

<%
}
else{
//rest of the page

posted on 2006-05-06 15:53 迷途书童 阅读(924) 评论(3)  编辑  收藏 所属分类: java应用

评论

# re: Integrated cas with liferay[未登录]  回复  更多评论   

Can you send us an email to liferaychina@gmail.com
2008-08-14 22:52 | John

# re: Integrated cas with liferay  回复  更多评论   

您好,现在我正在将cas的登录整合到liferay中,看到你上面的文章感觉应该是一种解决的办法,但是自己还是没有弄明白,希望您能给予帮助,谢谢
我的msn 是 hanxd106@hotmail.com
邮箱是:172932@163.com
2009-03-10 09:44 | 小皮球

# re: Integrated cas with liferay  回复  更多评论   

中国大连Liferay服务

QQ:1417153858 (Liferay支持)
QQ:1410151582 (Liferay培训)
QQ:1492270185 (Liferay企业版)

24小时电话联系:
0411-84898263 (总机)
15601156692 (市场部)

Liferay中国服务大连QQ群: 49845872
2010-08-12 10:09 | hmf0786

只有注册用户登录后才能发表评论。


网站导航: