- 浏览: 289731 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chenchangqun:
这段示例代码没有客户端 没法实验
Java NIO原理和使用 -
congjl2002:
误,整理好了在发phk070832 写道垃圾代码,一大推的编译 ...
snmp trap的接收(jdmk方式) -
phk070832:
垃圾代码,一大推的编译错误,整理好了在发表吧。
snmp trap的接收(jdmk方式) -
zhangcctao:
我也遇到线程池的内存溢出问题。。不知道是不是这个原因呀?
多线程中使用静态方法 -
新入职:
分享了,这个eclise版本有没有讲究?我的3.3的可以么
windows下安装android及eclipse配置
前两天看到别人写的,感觉不错,就转了过来做为参考
为了满足portal门户与各个子系统统一登录的需求,从而使用CAS进行SSO单点登录的配置开发。
开发资源
开发中所使用的资源版本如下说明,不同的版本所使用的配置方法及开发步骤不同,请注意相应的版本号。
Liferay portal 4.3.0 |
|
liferay-portal-cas-web-4.3.0.war |
|
cas-server-3.0.5.zip |
http://www.ja-sig.org/products/cas/ |
cas-client-java-2.1.1.zip |
http://www.ja-sig.org/products/cas/ |
环境要求
JDK 1.4.2 |
Websphere6.0.2.15 |
开发使用Liferay portal 4.3.0门户平台框架,测试环境使用liferay绑定的tomacat5.X+JDK1.4,可以从http://www.liferay.com/官网上下载其绑定的相关版本进行整合开发。
单点登陆服务端使用liferay整合后的liferay-portal-cas-web-4.3.0.war进行配置,其集成使用的CAS版本为cas-server-3.0.5.jar,客户端使用CAS Client2.11;相关资料文档可查看http://www.ja-sig.org/products/cas/相关文档。
CAS-SERVER
CAS是Yale大学的ITS开发的一套JAVA实现的开源的SSO的服务。该服务是以一个java web app(eg:cas.war)来进行服务的,使用时需要将cas.war发布到一个servlet2.3兼容的服务器上,并且服务器需要支持SSL,在需要使用该服务的其他服务器(客户端),配置相应的以fitle实现SSO。
在liferay portal项目中,使用自已集成的liferay-portal-cas-web-4.3.0.war,也可在cas的官方站点中下载相应原码cas-server-3.0.5.zip进行修改!
CAS WEB应用
在lifreay项目中下载liferay-portal-cas-web-4.3.0.war,里面集成了SSO单点登录的开发方法。
将项目导入eclipse进行二次开发。
使用liferay portal进行CAS Server配置,其配置方法在liferay官方文档中有详细的说明:
http://content.liferay.com/4.3/doc/installation/liferay_4_installation_guide/multipage/ch05s04.html
1、下载Liferay-portal-cas-4.3.x.war;下载地址 www.liferay/web/guest/downloads
2、并将下载的war更名为cas.war,发布至tomcat下,进行相关设置。具体的发布方法需进行数字签名和tomcat环境配置工作。
页面改造
Ø CAS汉化改造:
在src下使用eclipse的properties插件翻译messages.properties,如:
screen.welcome.welcome=欢迎您进入PORTAL平台
Ø CAS页面改造:
对基本的登录登出页面及布局进行改造,以适合信息平台的需要,具体的改造页面主要包括:
"cas"WEB-INF"view"jsp"default"ui"casLoginView.jsp —登录页面
"cas"WEB-INF"view"jsp"default"ui"casLogoutView.jsp —登出页面
"cas"WEB-INF"view"jsp"default"ui"casLogoutView.jsp —登出页面
"cas"WEB-INF"view"jsp"default"ui"casGenericSuccess.jsp —录成功页面
"cas"WEB-INF"view"jsp"default"ui"includes"top.jsp —包含的头文件
"cas"WEB-INF"view"jsp"default"ui"includes"bottom.jsp —包含的头脚文件
CAS跟普通的Web系统融合认证和授权,需增加java授权文件,此文件继承AbstractUsernamePasswordAuthenticationHandler ,并进行验证。 1、在src下增加DBHandlers.java DBHandlers授权改造
package com.yitong.cas.auth.provider;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
/**
* @author soju
* @version 1.0
*
*/
public final class DBHandlers extends
AbstractUsernamePasswordAuthenticationHandler {
private Logger log = Logger.getLogger(DBHandlers.class);
/**
* 相关的数据库配置DS对应的jndi
*/
private String _jndi = "lportal";
public boolean authenticateUsernamePasswordInternal(
final UsernamePasswordCredentials credentials) {
String username = credentials.getUsername();
String password = credentials.getPassword();
log.info("username:" + username);
log.info("password:" + password);
try {
password = Security.encryptMD5(password);
log.debug("md5password" + password);
} catch (Exception e) {
log.warn("MD5加密出错", e);
throw new Exception("MD5加密出错");
return false;
}
try {
if (checkuser(username, password) == 1) {
getLog().info("认证成功!");
return true;
}
} catch (Exception e) {
log.warn("failed authentication", e);
}
return false;
}
private int checkuser(String user, String pwd) throws Exception {
int ok= 0;
Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup(_jndi);
Connection conn = ds.getConnection();
String sql = "select * from user_ where screenname='"+ user + "' and password_='" + pwd + "' ";
log.info("sql= " + sql);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
log.info("登录成功!");
if (rs.next()) {
Ok=1;
} else {
log.info("帐号不存在或密码错误!");
}
conn.close();
return rei;
}
protected void afterPropertiesSetInternal() throws Exception {
super.afterPropertiesSetInternal();
}
}
CAS-CLIENT
配置要求
CAS 的客户端可以有很多种,因为验证的结果是以XML的格式返回的,故可以根据
需要实现一个自己的客户端。
http://www.yale.edu/tp/cas/cas-client-2.0.11.zip
http://www.ja-sig.org/products/cas/client/index.html
开发所需配置包,注意版本问题,会因版本开发的client不同
包名 |
说明 |
spring-mock.jar |
|
jwebunit-1.3.zip |
|
httpunit-1.6.2.zip |
|
junit-4.4.zip |
代码配置
1、修改代码SecureURL.java,因数字签名只能使用只能是域名,而不能是IP之类的代替,故修改如下代码
edu.yale.its.tp.cas.util
//URLConnection uc = u.openConnection();
/**
* @sojust
* 由于hostname 只能是域名,而不能是IP之类的 屏蔽掉对hostname的校验
* http://forum.java.sun.com/thread.jspa?threadID=521779
* begin
*/
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: "+urlHostName+" vs."+session.getPeerHost());
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
HttpsURLConnection uc= (javax.net.ssl.HttpsURLConnection)u.openConnection();
//end
2、修改Build.xml,将代码打包发布
<target name="deploy">
<mkdir dir="build"/>
<mkdir dir="build/META-INF"/>
<javac srcdir="src"
destdir="build"
deprecation="false"
classpathref="project.classpath"
/>
<copy todir="build/META-INF">
<fileset dir="conf">
<include name="*"/>
</fileset>
</copy>
<jar jarfile="lib/casclient.jar" basedir="build"/>
</target>
<path id="project.classpath">
<path refid="lib.classpath" />
</path>
<path id="lib.classpath">
<fileset dir="lib" includes="*.jar" />
</path>
PORTAL平台接入
资源介绍
Liferay portal作为sso一个的客户端,使用Liferay-portal-cas-4.3.x.war进行配置比较简介,特别是4.0版本后的配置,其官网上有详细的说明介绍:
http://content.liferay.com/4.3/doc/installation/liferay_4_installation_guide/multipage/ch05s04.html
代码配置
修改portal-ext.properties ,如果系统中没有则创建一个portal-ext.properties ;打开portal-ext.properties并增加如下代码:
cas.auth.enabled=true
cas.login.url=https://server IP:port/cas/login
cas.logout.url=https://server IP:port/cas/logout
cas.service.url=http:// client IP:port/portal/c/portal/login
cas.validate.url=https:// server IP:port/cas/proxyValidate
配置完成后,测试client的portal,登录http:// client IP:port/portal/c/portal/login
(我的项目中增加/portal项目名称),系统会自动跳转至SSO登录界面,登录后会跳转回client的portal。登录成功!
其它系统接入
子系统配置
其它客户端子系统接入时需将提供的casclient.jar包烤入到应用"WEB-INF"lib 下,并进行相关配置。
web.xml配置
在wab中加入CASFilter,设置跳转过滤!
//URLConnection uc = u.openConnection();
/**
* @sojust
* 由于hostname 只能是域名,而不能是IP之类的 屏蔽掉对hostname的校验
* http://forum.java.sun.com/thread.jspa?threadID=521779
* begin
*/
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
System.out.println("Warning: URL Host: "+urlHostName+" vs."+session.getPeerHost());
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
HttpsURLConnection uc= (javax.net.ssl.HttpsURLConnection)u.openConnection();
//end
<target name="deploy">
<mkdir dir="build"/>
<mkdir dir="build/META-INF"/>
<javac srcdir="src"
destdir="build"
deprecation="false"
classpathref="project.classpath"
/>
<copy todir="build/META-INF">
<fileset dir="conf">
<include name="*"/>
</fileset>
</copy>
<jar jarfile="lib/casclient.jar" basedir="build"/>
</target>
<path id="project.classpath">
<path refid="lib.classpath" />
</path>
<path id="lib.classpath">
<fileset dir="lib" includes="*.jar" />
</path>
cas.auth.enabled=true
cas.login.url=https://server IP:port/cas/login
cas.logout.url=https://server IP:port/cas/logout
cas.service.url=http:// client IP:port/portal/c/portal/login
cas.validate.url=https:// server IP:port/cas/proxyValidate
相关推荐
本文档主要介绍了如何在Portal环境中实现SSO(Single Sign-On)单点登录功能,使用了CAS(Central Authentication Service)作为认证服务。以下是对关键知识点的详细说明: 1. **SSO单点登录**:SSO允许用户在一个...
这个开发文档集合提供了一套全面的指南,帮助开发者深入理解WebSphere Portal的架构、功能以及如何有效地进行开发和定制。 一、WebSphere Portal基础知识 WebSphere Portal的核心功能包括用户界面管理、内容聚合、...
开发文档是理解WebSphere Portal Express核心特性和功能的关键资源,让我们详细探讨其中可能包含的知识点。 1. **安装与配置**:这部分内容会涵盖如何在不同操作系统环境下安装WebSphere Portal Express,包括系统...
1. 统一身份认证(Single Sign-On, SSO):Portal系统通常需要集成多个不同的应用系统,SSO技术使得用户只需一次登录即可访问所有关联的应用,提高了用户体验。 2. 个性化(Personalization):Portal可以根据用户...
IBM Portal 开发教程 在IT行业中,IBM Portal是一款强大的企业级门户平台,它为企业提供了集成...通过阅读《portal.pdf》文档,你将能够掌握IBM Portal的开发技术,提升自己的专业技能,为企业的信息化建设贡献力量。
Websphere Portal是一款由IBM开发的企业级门户平台,它允许用户通过单一的登录凭证访问多个应用程序和服务。SSO技术使得用户只需进行一次身份验证,即可在多个相互关联的应用系统间自由切换,提高了用户体验并增强了...
Portal平台通过单一登录(SSO)机制和数据同步功能,确保用户在整个企业范围内的一致性体验,避免了多次登录和数据不一致的问题。 9. **源码与工具支持** 提到的“源码”标签可能意味着该平台提供了开源版本,如...
3. Portal集成开发手册聚焦于两个核心领域:单点登录(Single Sign-On, SSO)和消息待办(Message To-Do)功能的实现。文档旨在向开发者介绍如何将Portal与其他产品或第三方产品进行集成。 4. 单点登录章节介绍...
**门户(Portal)开发实例详解** 在信息技术领域,门户(Portal)是一种综合性的网络平台,它为用户提供个性化、集中的访问点,可以整合多种服务、信息资源和应用程序。本实例将探讨如何进行门户协议开发,特别是...
**SSO开发** - **自定义身份验证提供者**:对于特定需求,可能需要开发自定义身份验证提供者,如与第三方身份管理系统集成。 - **令牌和声明处理**:开发过程中,理解如何处理和验证SAML令牌,以及如何映射声明到...
金蝶EAS portal单点登录到SHR文档 单点登录(Single Sign-On,SSO)是指用户只需要输入一次用户名和密码,即可访问多个相关的应用系统,而不需要再次输入登录信息。金蝶EAS portal单点登录到SHR文档提供了详细的...
【portal开发教程】 在IT行业中,Portal是一种集成了多种服务和信息资源的统一访问平台,它为用户提供个性化、一站式的访问体验。Portal开发是构建这种平台的过程,涉及到多个技术和概念,包括用户界面设计、身份...
JBoss Portal的特点包括多实例和集群支持、动态部署、DB无关性、SSO/LDAP集成、JAAS认证、缓冲技术、群集能力和热部署。然而,它的组件相对较少,可能需要额外开发来增强功能,且只能在JBoss应用服务器上运行。 2. ...
【portal入门详解】 在信息化建设日益发达的今天,Portal技术成为了企业...通过深入学习和实践,你可以熟练掌握Portal开发,为企业的数字化转型贡献力量。文档列表中的文件提供了丰富的学习材料,是初学者的绝佳起点。
以上文档集合覆盖了IBM_Portal开发、配置和定制的多个方面,无论是初学者还是经验丰富的开发者,都能从中获取宝贵的指导和实践经验。通过深入学习和实践,你可以提高你的IBM_Portal技能,为组织提供更高效、更具吸引...
本文档《IBM WebSphere Portal资料2》主要介绍了如何将 IBM WebSphere Portal V5 和 Tivoli Access Manager (TAM) V4.1 进行集成,以构建一个安全的门户,并扩展了单点登录功能。本文档不仅提供了设计指导原则和技术...