Topic: 求助!关于JBoss下的JOSSO单点登录问题! |
Print this page |
1.求助!关于JBoss下的JOSSO单点登录问题! | Copy to clipboard |
Posted by: foozle Posted on: 2008-06-23 17:48 现在要实现单点登录功能,由一台单独的WEB服务器做身份统一认证,操作系统为Linux,服务器为JBoss4.x.... 我原来没做过此类项目,对其认证方式不大清楚,网上找了两天资料,解决方案不是很多,发现有几中开源SSO系统,例如CAS,JOSSO. 我现在将JOSSO部署到JBOSS上并连接好MYSQL服务器,完成了基本验证,单下一步不知道该怎么进行了,我下面的N个业务模块该怎么配置?该如何实现单点登录? 另外,CAS和JOSSO在认证模式上有什么不同?听别人说JBOSS有自己的单点登录认证,不知指的是否是JOSSO??? 跪谢~~~~哭谢!!!!!!!!!!!!!!!! |
2.Re:求助!关于JBoss下的JOSSO单点登录问题! [Re: foozle] | Copy to clipboard |
Posted by: foozle Posted on: 2008-06-24 09:43 我已经在JBOSS下成功部署了CAS,并简单实现了SSO. 下了client的源码,进行了分析,发现自己是可以定制client的.呵. 如下是我写的配置过程....请多执教..不足的地方请指正.... 部署环境: 操作系统:WindowsXPsp2 JDK:1.5 服务器:JBOSS4.2.4 CASServer:3.2.1 http://www.ja-sig.org/products/cas/ CASClient:2.0.1 配置步骤: 一、修改本操作系统虚拟域名 Windows操作系统:C:\WINDOWS\system32\drivers\etc下的hosts文件,加入一行cas.server ip Linux 操作系统 /etc/hosts 二、生成服务器端安全证书 keytool -genkey -alias my-alias-name -keyalg RSA -keystore keystore-file keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file 密码:自定义 例vampire 提示姓名:写为更改后的虚拟域名,例:cas.server 国家代码:CN Copy 生成的两个证书文件到 %JBOSS_HOME%/server/default/conf下 Copy cas-server-3.2.1-release.zip包modules下的cas-server-webapp-3.2.1.war到Jboss下的运行服务器下,并更名为cas.war 三、修改JBOSS服务器配置,打开SSL通道 修改jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer\server.xml 找到 <Connector port="8080" address="${jboss.bind.address}" maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"/> 修改为: <Connector port="8080" address="cas.server" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> 找到 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"/> 修改为: <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="${jboss.server.home.dir}/conf/keystore-file" keystorePass="vampire"/> 四、导出服务端的证书,用来给所有需要用到的客户端导入 keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name 在客户端的JVM里导入信任的SERVER的证书 默认密码:changeit 五、将导出的证书上传的client服务器上(JBOSS)。 启动JBoss,检验cas配置是否成功,访问http://ip:8443/cas/login,如果能看到cas的登录页面则表示配 六、配置cas-client,在需要做单点登录的模块上做修改,demo.war Copy cas-client-2.0.11\cas-client-2.0.11\java\lib\ casclient.jar到demo.war\web-inf\lib下 Copy cas-server-3.2.1-release\cas-server-3.2.1\modules\cas-server-support-jdbc-3.2.1.jar到同上目录下 Copy mysql-connector-java-5.0.6-bin.jar 到同上目录下 修改 demo.war\web-inf\web.xml 加入如下内容: <filter> <filter-name>CASFilter</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://cas.server:8443/cas/login</param-value> </init-param> <init-param> <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name> <param-value>https:// cas.server:8443/cas/proxyValidate</param-value> </init-param> <init-param> <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name> <param-value> cas.server:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/ *</url-pattern> </filter-mapping> 七、配制CAS进行数据库验证 这里使用MYSQL为例: 建立表 CREATE TABLE `app_user` ( `username` varchar(30) NOT NULL default '', `password` varchar(45) NOT NULL default '', PRIMARY KEY (`username`)   ENGINE=InnoDB DEFAULT CHARSET=utf8; 并添加测试用户 insert into app_user(username,password)values(“123”,”123”); 修改cas.war\web-info\deployerConfigContext.xml 注释掉: <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> 加上: <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from app_user where username=?" /> <property name="dataSource" ref="dataSource" /> </bean> 并在最后加上一个bean <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql://localhost:3306/dbName</value></property> <property name="username"><value>root</value></property> <property name="password"><value>windows</value></property> </bean> OK,重新发布cas.war. 访问http://cas.server:8080/demo即可转到CAS做验证 简单配置完成。 |
3.Re:求助!关于JBoss下的JOSSO单点登录问题! [Re: foozle] | Copy to clipboard |
Posted by: foozle Posted on: 2008-06-24 12:58 现在的问题: 我下挂N个模块,SSO解决了身份认证问题,我其它的业务模块想处理级别与角色的功能过滤,不知该如何实现? 请多指教 |
4.Re:求助!关于JBoss下的JOSSO单点登录问题! [Re: foozle] | Copy to clipboard |
Posted by: foozle Posted on: 2008-06-26 22:08 这个也解决了,通过验证后userName会存在session里,子模块做角色过滤 |
5.Re:求助!关于JBoss下的JOSSO单点登录问题! [Re: foozle] | Copy to clipboard |
Posted by: foozle Posted on: 2008-07-02 14:02 靠.没人帮忙? 结贴@!! |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |