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`)
  Wink 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