>keytool -genkey -alias convict -keyalg RSA -keystore D:/keys/convicteva
其中名字与姓氏这一写sso登录的域名:sso.convicteva.com
导出证书
>keytool -export -alias convict -file D:/keys/convicteva.crt -keystore D:/keys/convicteva
输入上一步的密码
将证书文件convicteva.crt导入到名为cacerts的证书库中
>keytool -import -keystore D:\keys\cacerts -file D:/keys/convicteva.crt -alias convicteva
输入同样的密码。在d:/keys/ 可以看到生成的相关文件。
参考:http://www.cnblogs.com/xdp-gacl/p/3750965.html
2、配置sso 服务器(服务器 192.168.174.130)
安装jdk(1.7),下载tomcat7.0
上传1步骤生成的证书等文件到/opt/webapp/keys 目录。
配置Tomcat启用SSL:
<Connector port="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/opt/webapp/keys/convicteva"
keystorePass="masz921" truststoreFile="/opt/webapp/keys/cacerts" />keystoreFile 为证书文件keystorePass 生成证书文件的密码
truststoreFile 受信任的证书库(客户端使用sso服务,需要在客户商户端jre/lib/security 目录下导入第1步骤生成的证书库文件。这样在连接到sso 服务器时才是受信任的,否则跳转到sso服务时会报500:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException,注意jre和jdk/jre 中都有security)。
3、安装sso 服务
下载CAS Server 3.5.2(4.0.0 版本证书验证不过,应该是证书没有通过认证)
下载地址:https://www.apereo.org/projects/cas/download-cas
解压后把modules/cas-server-webapp-3.5.2.war 复制到tomcat webapps 目录下,改名为cas.war。启动tomcat
配置hosts:
192.168.174.130 sso.convicteva.com
浏览器输入地址:https://sso.convicteva.com:8443/cas
输入用户名和密码admin/admin,登录成功。
4、工程测试
创建两个工程:demoa,demob(端口分别使用8080,8081),只有一个简单的登录成功后的页面。
demoa 工程 web.xml 配置:
<!-- ======================== 单点登录配置 ======================== -->
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!--该过滤器用于实现单点登出功能,可选配置。 -->
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://sso.convicteva.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://sso.demoa.com:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
<filter-name>CAS_Validation_Filter
</filter-name>
<filter-class>
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://sso.convicteva.com:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://sso.demoa.com:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS_Validation_Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
该过滤器负责实现HttpServletRequest请求的包裹,
比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
-->
<filter>
<filter-name>HttpServletRequestWrapperFilter</filter-name>
<filter-class>
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpServletRequestWrapperFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
比如AssertionHolder.getAssertion().getPrincipal().getName()。
-->
<filter>
<filter-name>assertionThreadLocalFilter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>assertionThreadLocalFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ======================== 单点登录结束 ======================== -->
<servlet>
<servlet-name>IndexServlet</servlet-name>
<servlet-class>com.convicteva.sso.servlet.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>demob web.xml 把上面的serverName 的值替换为:http://sso.demob.com:8081。代码相同配置hosts:
127.0.0.1 sso.demoa.com
127.0.0.1 sso.demob.com
输入demoa 工程域名 http://sso.demoa.com:8080 跳转到sso 登录页面。
输入用户名和密码 admin/admin 回跳到sso.demoa.com:8080
此时输入sso.demob.com:8081 跳转到demob工程登录成功的页面
注意:测试工程运行的jdk 要导入第一步导出的证书库,即sso服务器的信任的证书配置(truststoreFile)。
测试工程代码:http://download.csdn.net/detail/convict_eva/9653850
本文档详细介绍了CAS入门过程,包括安装SSO服务器、配置SSL、部署CAS Server 3.5.2以及进行工程测试。通过配置hosts、启用Tomcat SSL,实现了sso.convicteva.com的登录验证。测试阶段创建了两个工程demoa和demob,确保了跨应用的单点登录功能正常工作。

832

被折叠的 条评论
为什么被折叠?



