当前位置:文档之家› [转自IBM开发者社区]在Tomcat中使用CAS实现单点登录

[转自IBM开发者社区]在Tomcat中使用CAS实现单点登录

[转自IBM开发者社区]在Tomcat中使用CAS实现单点登录
[转自IBM开发者社区]在Tomcat中使用CAS实现单点登录

转自:IBM开发者社区

使用CAS 在Tomcat 中实现单点登录

单点登录(Single Sign On , 简称SSO )是目前比较流行的服务于企业业务整合的解决方案之一,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对Web 应用的单点登录框架,本文介绍了CAS 的原理、协议、在Tomcat 中的配置和使用,对于采用CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。

CAS 介绍

CAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。CAS 具有以下特点:

?开源的企业级单点登录解决方案。

?CAS Server 为需要独立部署的Web 应用。

?CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web 应用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

CAS 原理和协议

从结构上看,CAS 包含两个部分:CAS Server 和CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server。图1 是CAS 最基本的协议过程:

图 1. CAS 基础协议

CAS Client 与受保护的客户端应用部署在一起,以Filter 方式保护受保护的资源。对于访问受保护资源的每个Web 请求,CAS Client 会分析该请求的Http 请求中是否包含Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CAS Server 登录地址,并传递Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不

可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service 所在地址,并为客户端浏览器设置一个Ticket Granted Cookie(TGC),CAS Client 在拿到Service 和新产生的Ticket 过后,在第5,6 步中与CAS Server 进行身份合适,以确保Service Ticket 的合法性。

在该协议中,所有与CAS 的交互均采用SSL 协议,确保,ST 和TGC 的安全性。协议工作过程中会有2 次重定向的过程,但是CAS Client 与CAS Server 之间进行Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考CAS 官方网站上的相关文档。

准备工作

本文中的例子以tomcat5.5 为例进行讲解,下载地址:

https://www.doczj.com/doc/fd15155903.html,/download-55.cgi

到CAS 官方网站下载CAS Server 和Client,地址分别为:

https://www.doczj.com/doc/fd15155903.html,/downloads/cas/cas-server-3.1.1-release.zip

https://www.doczj.com/doc/fd15155903.html,/downloads/cas-clients/cas-client-java-2.1.1.zip

部署CAS Server

CAS Server 是一套基于Java 实现的服务,该服务以一个Java Web Application 单独部署在与servlet2.3 兼容的Web 服务器上,另外,由于Client 与CAS Server 之间的交互采用Https 协议,因此部署CAS Server 的服务器还需要支持SSL 协议。当SSL 配置成功过后,像普通Web 应用一样将CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。

在Tomcat 上部署一个完整的CAS Server 主要按照以下几个步骤:

配置Tomcat 使用Https 协议

如果希望Tomcat 支持Https,主要的工作是配置SSL 协议,其配置过程和配置方法可以参考Tomcat 的相关文档。不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用IP 地址,而要使用机器名或域名。

部署CAS Server

CAS Server 是一个Web 应用包,将前面下载的cas-server-3.1.1-release.zip 解开,把其中的

cas-server-webapp-3.1.1.war 拷贝到tomcat的webapps 目录,并更名为cas.war。由于前面已配置好tomcat 的https 协议,可以重新启动tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的CAS 登录页面,则说明CAS Server 已经部署成功。

虽然CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证(Authentication) 接口和CAS Server 的界面。

扩展认证接口

CAS Server 负责完成对用户的认证工作,它会处理登录时的用户凭证(Credentials) 信息,用户名/密码对是最常见的凭证信息。CAS Server 可能需要到数据库检索一条用户帐号信息,也可能在XML 文件中检索用户名/密码,还可能通过LDAP Server 获取等,在这种情况下,CAS 提供了一种灵活但统一的接口和实现分离的方式,实际使用中CAS 采用哪种方式认证是与CAS 的基本协议分离开的,用户可以根据认证的接口去定制和扩展。

扩展AuthenticationHandler

CAS 提供扩展认证的核心是AuthenticationHandler 接口,该接口定义如清单1 下:

清单 1. AuthenticationHandler定义

public interface AuthenticationHandler {

/**

* Method to determine if the credentials supplied are valid.

* @param credentials The credentials to validate.

* @return true if valid, return false otherwise.

* @throws AuthenticationException An AuthenticationException can contain

* details about why a particular authentication request failed.

*/

boolean authenticate(Credentials credentials) throws AuthenticationException;

/**

* Method to check if the handler knows how to handle the credentials

* provided. It may be a simple check of the Credentials class or something

* more complicated such as scanning the information contained in the

* Credentials object.

* @param credentials The credentials to check.

* @return true if the handler supports the Credentials, false othewrise.

*/

boolean supports(Credentials credentials);

}

该接口定义了2 个需要实现的方法,supports ()方法用于检查所给的包含认证信息的Credentials 是否受当前AuthenticationHandler 支持;而authenticate() 方法则担当验证认证信息的任务,这也是需要扩展的主要方法,根据情况与存储合法认证信息的介质进行交互,返回boolean 类型的值,true 表示验证通过,false 表示验证失败。CAS3中还提供了对AuthenticationHandler 接口的一些抽象实现,比如,可能需要在执行authenticate() 方法前后执行某些其他操作,那么可以让自己的认证类扩展自清单2 中的抽象类:

清单 2. AbstractPreAndPostProcessingAuthenticationHandler定义

public abstract class AbstractPreAndPostProcessingAuthenticationHandler

implements AuthenticateHandler{

protected Log log = LogFactory.getLog(this.getClass());

protected boolean preAuthenticate(final Credentials credentials) {

return true;

}

protected boolean postAuthenticate(final Credentials credentials,

final boolean authenticated) {

return authenticated;

}

public final boolean authenticate(final Credentials credentials)

throws AuthenticationException {

if (!preAuthenticate(credentials)) {

return false;

}

final boolean authenticated = doAuthentication(credentials);

return postAuthenticate(credentials, authenticated);

}

protected abstract boolean doAuthentication(final Credentials credentials)

throws AuthenticationException;

}

AbstractPreAndPostProcessingAuthenticationHandler 类新定义了preAuthenticate() 方法和postAuthenticate() 方法,而实际的认证工作交由doAuthentication() 方法来执行。因此,如果需要在认证前后执行一些额外的操作,可以分别扩展preAuthenticate()和ppstAuthenticate() 方法,而doAuthentication() 取代authenticate() 成为了子类必须要实现的方法。

由于实际运用中,最常用的是用户名和密码方式的认证,CAS3 提供了针对该方式的实现,如清单3 所示:

清单 3. AbstractUsernamePasswordAuthenticationHandler 定义

public abstract class AbstractUsernamePasswordAuthenticationHandler extends

AbstractPreAndPostProcessingAuthenticationHandler{

...

protected final boolean doAuthentication(final Credentials credentials)

throws AuthenticationException {

return authenticateUsernamePasswordInternal((UsernamePasswordCredentials) credentials); }

protected abstract boolean authenticateUsernamePasswordInternal(

final UsernamePasswordCredentials credentials) throws AuthenticationException; protected final PasswordEncoder getPasswordEncoder() {

return this.passwordEncoder;

}

public final void setPasswordEncoder(final PasswordEncoder passwordEncoder) {

this.passwordEncoder = passwordEncoder;

}

...

}

基于用户名密码的认证方式可直接扩展自AbstractUsernamePasswordAuthenticationHandler,验证用户名密码的具体操作通过实现authenticateUsernamePasswordInternal() 方法达到,另外,通常情况下密码会是加密过的,setPasswordEncoder() 方法就是用于指定适当的加密器。

从以上清单中可以看到,doAuthentication() 方法的参数是Credentials 类型,这是包含用户认证信息的一个接口,对于用户名密码类型的认证信息,可以直接使用UsernamePasswordCredentials,如果需要扩展其他类型的认证信息,需要实现Credentials接口,并且实现相应的CredentialsToPrincipalResolver 接口,其具体方法可以借鉴UsernamePasswordCredentials 和UsernamePasswordCredentialsToPrincipalResolver。

JDBC 认证方法

用户的认证信息通常保存在数据库中,因此本文就选用这种情况来介绍。将前面下载的cas-server-3.1.1-release.zip 包解开后,在modules 目录下可以找到包cas-server-support-jdbc-3.1.1.jar,其提供了通过JDBC 连接数据库进行验证的缺省实现,基于该包的支持,我们只需要做一些配置工作即可实现JDBC 认证。

JDBC 认证方法支持多种数据库,DB2, Oracle, MySql, Microsoft SQL Server 等均可,这里以DB2 作为例子介绍。并且假设DB2数据库名:CASTest,数据库登录用户名:db2user,数据库登录密码:db2password,用户信息表为:userTable,该表包含用户名和密码的两个数据项分别为userName 和password。

1. 配置DataStore

打开文件%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml,添加一个新的bean 标签,对于DB2,内容如清单4 所示:

清单 4. 配置DataStore

com.ibm.db2.jcc.DB2Driver

jdbc:db2://9.125.65.134:50000/CASTest

db2user

db2password

其中id 属性为该DataStore 的标识,在后面配置AuthenticationHandler 会被引用,另外,需要提供DataStore 所必需的数据库驱动程序、连接地址、数据库登录用户名以及登录密码。

2. 配置AuthenticationHandler

在cas-server-support-jdbc-3.1.1.jar 包中,提供了3 个基于JDBC 的AuthenticationHandler,分别为BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler。其中BindModeSearchDatabaseAuthenticationHandler 是用所给的用户名和密码去建立数据库连接,根据连接建立是否成功来判断验证成功与否;QueryDatabaseAuthenticationHandler 通过配置一个SQL 语句查出密码,与所给密码匹配;SearchModeSearchDatabaseAuthenticationHandler 通过配置存放用户验证信息的表、用户名字段和密码字段,构造查询语句来验证。

使用哪个AuthenticationHandler,需要在deployerConfigContext.xml 中设置,默认情况下,CAS 使用一个简单的username=password 的AuthenticationHandler,在文件中可以找到如下一行:

class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword

AuthenticationHandler" />,我们可以将其注释掉,换成我们希望的一个AuthenticationHandler,比如,使用

QueryDatabaseAuthenticationHandler 或SearchModeSearchDatabaseAuthenticationHandler 可以分别选取清单

5 或清单

6 的配置。

清单 5. 使用QueryDatabaseAuthenticationHandler

value="select password from userTable where lower(userName) = lower(?)" />

清单 6. 使用SearchModeSearchDatabaseAuthenticationHandler

class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"

abstract="false" singleton="true" lazy-init="default"

autowire="default" dependency-check="default">

userTable

userName

password

另外,由于存放在数据库中的密码通常是加密过的,所以AuthenticationHandler 在匹配时需要知道使用的加密方法,在deployerConfigContext.xml 文件中我们可以为具体的AuthenticationHandler 类配置一个property,指定加密器类,比如对于QueryDatabaseAuthenticationHandler,可以修改如清单7所示:

清单7. 添加passwordEncoder

value="select password from userTable where lower(userName) = lower(?)" />

其中myPasswordEncoder 是对清单8 中设置的实际加密器类的引用:

清单8. 指定具体加密器类

class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/>

这里MyPasswordEncoder 是根据实际情况自己定义的加密器,实现PasswordEncoder 接口及其encode() 方法。

3. 部署依赖包

在以上配置完成以后,需要拷贝几个依赖的包到cas 应用下,包括:

?将cas-server-support-jdbc-3.1.1.jar 拷贝到%CATALINA_HOME%/webapps/cas/ WEB-INF/lib 目录。

?数据库驱动,由于这里使用DB2,将%DB2_HOME%/java 目录下的db2java.zip (更名为db2java.jar), db2jcc.jar, db2jcc_license_cu.jar 拷贝到%CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。对于其他数据库,同样将相应数据库驱动程序拷贝到该目录。

?DataStore 依赖于commons-collections-3.2.jar, commons-dbcp-1.2.1.jar, commons-pool-1.3.jar,需要到apache 网站的Commons 项目下载以上3 个包放进%CATALINA_HOME%/webapps/cas/WEB-INF/lib 目录。

扩展CAS Server 界面

CAS 提供了2 套默认的页面,分别为“ default ”和“ simple ”,分别在目录“ cas/WEB-INF/view/jsp/default ”和

“ cas/WEB-INF/view/jsp/simple ”下。其中default 是一个稍微复杂一些的页面,使用CSS,而simple 则是能让CAS 正常工作的最简化的页面。

在部署CAS 之前,我们可能需要定制一套新的CAS Server 页面,添加一些个性化的内容。最简单的方法就是拷贝一份default 或simple 文件到“ cas/WEB-INF/view/jsp ”目录下,比如命名为newUI,接下来是实现和修改必要的页面,有4 个页面是必须的:

?casConfirmView.jsp: 当用户选择了“ warn ”时会看到的确认界面

?casGenericSuccess.jsp: 在用户成功通过认证而没有目的Service时会看到的界面

?casLoginView.jsp: 当需要用户提供认证信息时会出现的界面

?casLogoutView.jsp: 当用户结束CAS 单点登录系统会话时出现的界面

CAS 的页面采用Spring 框架编写,对于不熟悉Spring 的使用者,在修改之前需要熟悉该框架。

页面定制完过后,还需要做一些配置从而让CAS 找到新的页面,拷贝

“ cas/WEB-INF/classes/default_views.properties ”,重命名为“ cas/WEB-INF/classes/ newUI_views.properties ”,并修改其中所有的值到相应新页面。最后是更新“ cas/WEB-INF/cas-servlet.xml ”文件中的viewResolver,将其修改为如清单9 中的内容。

清单9. 指定CAS 页面

class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:order="0">

${cas.viewResolver.basename}

newUI_views

部署客户端应用

单点登录的目的是为了让多个相关联的应用使用相同的登录过程,本文在讲解过程中构造2个简单的应用,分别以casTest1 和casTest2 来作为示例,它们均只有一个页面,显示欢迎信息和当前登录用户名。这2 个应用使用同一套登录信息,并且只有登录过的用户才能访问,通过本文的配置,实现单点登录,即只需登录一次就可以访问这两个应用。

与CAS Server 建立信任关系

假设CAS Server 单独部署在一台机器A,而客户端应用部署在机器B 上,由于客户端应用与CAS Server 的通信采用SSL,因此,需要在A 与B 的JRE 之间建立信任关系。

首先与A 机器一样,要生成B 机器上的证书,配置Tomcat 的SSL 协议。其次,下载

https://www.doczj.com/doc/fd15155903.html,/andreas/entry/no_more_unable_to_find的InstallCert.java,运行“ java InstallCert compA:8443 ”命令,并且在接下来出现的询问中输入1。这样,就将A 添加到了B 的trust store 中。如果多个客户端应用分别部署在不同机器上,那么每个机器都需要与CAS Server 所在机器建立信任关系。

配置CAS Filter

准备好应用casTest1 和casTest2 过后,分别部署在B 和C 机器上,由于casTest1 和casTest2,B 和C 完全等同,我们以casTest1 在B 机器上的配置做介绍,假设A 和B 的域名分别为domainA 和domainB。

将cas-client-java-2.1.1.zip 改名为cas-client-java-2.1.1.jar 并拷贝到casTest1/WEB-INF/lib目录下,修改web.xml 文件,添加CAS Filter,如清单10 所示:

清单10. 添加CAS Filter

...

CAS Filter

edu.yale.its.tp.cas.client.filter.CASFilter

edu.yale.its.tp.cas.client.filter.loginUrl

https://domainA:8443/cas/login

edu.yale.its.tp.cas.client.filter.validateUrl

https://domainA:8443/cas/serviceValidate

edu.yale.its.tp.cas.client.filter.serverName

domainB:8080

CAS Filter

/protected-pattern/*

...

对于所有访问满足casTest1/protected-pattern/ 路径的资源时,都要求到CAS Server 登录,如果需要整个casTest1 均受保护,可以将url-pattern 指定为“/*”。

从清单10 可以看到,我们可以为CASFilter 指定一些参数,并且有些是必须的,表格1和表格2中分别是必需和可选的参数:

表格 1. CASFilter 必需的参数

参数名作用

edu.yale.its.tp.cas.client.filter.loginUrl 指定CAS 提供登录页面的URL

edu.yale.its.tp.cas.client.filter.validateUrl 指定CAS 提供service ticket 或proxy ticket 验证服务的URL

edu.yale.its.tp.cas.client.filter.serverName 指定客户端的域名和端口,是指客户端应用所在机器而不是CAS Server 所

在机器,该参数或serviceUrl 至少有一个必须指定

edu.yale.its.tp.cas.client.filter.serviceUrl 该参数指定过后将覆盖serverName 参数,成为登录成功过后重定向的目

的地址

表格 2. CASFilter 可选参数

参数名作用

edu.yale.its.tp.cas.client.filter.proxyCallbackUrl 用于当前应用需要作为其他服务的代理(proxy)时获取Proxy Granting

Ticket 的地址

edu.yale.its.tp.cas.client.filter.authorizedProxy 用于允许当前应用从代理处获取proxy tickets,该参数接受以空格分隔

开的多个proxy URLs,但实际使用只需要一个成功即可。当指定该参

数过后,需要修改validateUrl 到proxyValidate,而不再是

serviceValidate

edu.yale.its.tp.cas.client.filter.renew 如果指定为true,那么受保护的资源每次被访问时均要求用户重新进

行验证,而不管之前是否已经通过

edu.yale.its.tp.cas.client.filter.wrapRequest 如果指定为true,那么CASFilter 将重新包装HttpRequest,并且使

getRemoteUser() 方法返回当前登录用户的用户名

edu.yale.its.tp.cas.client.filter.gateway 指定gateway 属性

传递登录用户名

CAS 在登录成功过后,会给浏览器回传Cookie,设置新的到的Service Ticket。但客户端应用拥有各自的Session,我们要怎么在各个应用中获取当前登录用户的用户名呢?CAS Client 的Filter 已经做好了处理,在登录成功后,就可以直接从Session 的属性中获取,如清单11 所示:

清单11. 在Java 中通过Session 获取登录用户名

// 以下两者都可以

session.getAttribute(CASFilter.CAS_FILTER_USER);

session.getAttribute("https://www.doczj.com/doc/fd15155903.html,er");

在JSTL 中获取用户名的方法如清单12 所示:

清单12. 通过JSTL 获取登录用户名

另外,CAS 提供了一个CASFilterRequestWrapper 类,该类继承自HttpServletRequestWrapper,主要是重写了getRemoteUser() 方法,只要在前面配置CASFilter 的时候为其设置“ edu.yale.its.tp.cas.client.filter.wrapRequest ”

参数为true,就可以通过getRemoteUser()方法来获取登录用户名,具体方法如清单13 所示:

清单13. 通过CASFilterRequestWrapper 获取登录用户名

CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);

out.println("The logon user:" + reqWrapper.getRemoteUser());

效果

在casTest1 和casTest2 中,都有一个简单Servlet 作为欢迎页面WelcomPage,且该页面必须登录过后才能访问,页面代码如清单14 所示:

清单14. WelcomePage 页面代码

public class WelcomePage extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException

{

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("");

out.println("");

out.println("Welcome to casTest2 sample System!");

out.println("");

out.println("");

out.println("

Welcome to casTest1 sample System!

");

CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request);

out.println("

The logon user:" + reqWrapper.getRemoteUser() + "

");

HttpSession session=request.getSession();

out.println("

The logon user:" +

session.getAttribute(CASFilter.CAS_FILTER_USER) + "

");

out.println("

The logon user:" +

session.getAttribute("https://www.doczj.com/doc/fd15155903.html,er") + "

");

out.println("");

out.println("");

}

}

在上面所有配置结束过后,分别在A,B,C上启动cas,casTest1 和casTest2,按照下面步骤来访问casTest1 和casTest2:

1. 打开浏览器,访问http://domainB:8080/casTest1/WelcomePage,浏览器会弹出安全提示,接受后即转到CAS

的登录页面,如图2 所示:

图 2. CAS 登录页面

图 3. 登录后访问casTest1 的效果

可以看到图中地址栏里的地址多出了一个ticket 参数,这就是CAS 分配给当前应用的ST(Service Ticket)。

1. 再在同一个浏览器的地址栏中输入http://domainC:8080/casTest2/WelcomePage,系统不再提示用户登录,

而直接出现如图4 所示的页面,并且显示在casTest1 中已经登录过的用户。

图4. 在casTest1 中登录过后访问casTest2 的效果

结束语

本文介绍了CAS 单点登录解决方案的原理,并结合实例讲解了在Tomcat 中使用CAS 的配置、部署方法以及效果。CAS 是作为开源单点登录解决方案的一个不错选择,更多的使用细节可以参考CAS 官方网站。

参考资料

转自:IBM开发者社区

CAS_SSO单点登录实例详细步骤

CAS SSO单点登录实例详细步骤 原创作者:孙俊财

第一步 1、用keytool生成证书: 命令: keytool -genkey -alias sjc -keyalg RSA -keysto re c:/store/mykey 说明: 这里-alias sjc 是表示生成的这个证书的别名叫sjc,-keyalg RSA 指的是采用的RSA算法,-keystore c:/store/mykey是指生成的证书存储的位置。回车后会提示你输入keystore password,这可以自己定(这里输入sunjuncai,下面配tomcat时要用的),然后是一些个人信息及组织信息,可以轻松搞定。 注意:密码输入后,会让你输入其他信息,记得这里第一个姓名必须是服务器的域名这里我输入的是完整计算机名称:gaofeng.nmc.hamcc 这里要注意如果不这样写就会报如下异常: java.io.IOException: HTTPS hostname wrong: should be 实战: C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc -keyalg RSA -keystore c:/store/mykey 输入keystore密码:sunjuncai

您的名字与姓氏是什么? [Unknown]:gaofeng.nmc.hamcc 您的组织单位名称是什么? [Unknown]:上海神洲数港 您的组织名称是什么? [Unknown]:网络优化 您所在的城市或区域名称是什么? [Unknown]:郑州 您所在的州或省份名称是什么? [Unknown]:河南 该单位的两字母国家代码是什么 [Unknown]:ZH CN= gaofeng.nmc.hamcc, OU=上海神洲数港, O=网络优化, L=郑州, ST=河南, C=ZH 正确吗? [否]:y 输入的主密码 (如果和keystore 密码相同,按回车): 2、创建证书后,就导出证书: 命令: keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey 说明: 从c:/store/mykey里取出证书入到c:/store/下,如果没有指定,就是存放在目录下C:\Documents and Settings\用户目录名\ 实战: C:\Documents and Settings\wangyoushi8>keytool -export -file c:/store/server.crt -alias sjc -keystore C:/store/mykey 输入keystore密码:sunjuncai 保存在文件中的认证 3、为客户端的JVM导入密钥: 命令: keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc 说明: 注意:输入密码时密码为"changeit",这是默认密码. 特别说明:这个D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDK的JRE路径下的lib目录. 至此,第一步完成。 实战: C:\Documents and Settings\wangyoushi8> keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc 输入keystore密码:changeit

(完整版)Tomcat6操作手册

Tomcat6操作手册 安装tomcat软件(此处用到的是tomcat的ZIP包,直接解压即可) 我在D盘下创建一个名为App的文件夹,然后将tomcat的ZIP包解压到此文件夹下 在D:\App\apache-tomcat-6.0.20\conf的文件夹下有个名为server.xml的文件,这是tomcat 的配置文件,里面有说明此软件的服务端口等信息,这些端口都可以修改,不过不要与其他的软件端口冲突了 Tomcat服务关闭的端口:8005 服务访问的端口:8080,还要在下面加一句话:URIEncoding="utf-8" 防止出现乱码 以及ajp的整合端口(tomcat与iis或者apache整合):8009,而Tomcat默认的SSL端口号是8443

项目的存放位置,默认在tomcat安装目录下的webapps内,也可以放在其他盘符下,只要将路径改为所要存放项目的路径即可 Webapps文件夹存放网站项目,或者说是网页文件,而webapps\ROOT目录是项目主应用程序,也是http: ip :8080访问时的主程序,一般情况下将除了ROOT的其他目录都删除,因为其他的目录都是放实例的,无用 lib文件夹用于存放java包,后缀名:.jar

看完这些文件后,要将tomcat的服务启动,以便访问网页,因为不是用.exe的安装程序安装的tomcat,所以服务不会自动加到系统里,我们要手动加入系统内 一种方法:启动tomcat的服务,只需要双击startup.bat即可,当出现“信息: Server startup in 511 ms”时,证明服务已经启动,也可以访问tomcat的页面了,但是这个cmd 框不能关掉,关掉后服务关闭 另一种方法:将服务加到系统内。先要进入到D:\App\apache-tomcat-6.0.20\bin目录下,然后执行service.bat install tomcat的命令(用法是:service.bat install/remove [service_name]),就会将tomcat的服务加到系统服务内,服务名称为Apache Tomcat tomcat 启动服务

简单的单点登录实现过程及效果展示

一、实现过程 从用到的jar包文件夹的cas-server-3.3.1modules中找出cas.war放到tomcat/webapps下面(cas-server-webapp-3.3.1.war重命名即可)。 现在cas默认的server端已经有了,下面自己写2个客户端测试一下 MyEclipse里面新建web project:sso 新建类HelloWorldExample package servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public final class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html");

PrintWriter writer = response.getWriter(); writer.println(""); writer.println(""); writer.println("Sample Application Servlet Page"); writer.println(""); writer.println(""); writer.println("

"); writer.println(""); writer.println(""); writer.println(""); writer.println(""); writer.println("
"); writer.println(""); writer.println(""); writer.println("

Sample Application Servlet

"); writer.println("This is the output of a servlet that is part of"); writer.println("the Hello, World application."); writer.println("
");

Tomcat网站发布配置方案详细说明

Tomcat网站发布配置方案详细说明 修改端口、修改默认发布目录、多域名绑定 一、修改发布端口号为80(Tomcat默认为8080) 打开配置文件(我的如下:E:\J2EEServer\Tomcat 6.0\conf\server.xml),找到: 代码如下: 修改后: 其实这里就是把port:8080,修改成port:80就可以了,其他的参数不变。这样客户机在访问服务器时直接输入IP或域名就可以了。 二、修改tomcat的字符集 大家在写程序中应该都遇到过中文乱码的问题,除了保证页面、数据库的字符集保持一致外还有一点需要注意,就是tamcat的字符集。有时从头到尾的检查程序,发现程序一切正常,可就是有乱码,看看Tomcat的字符集吧!找到E:\Tomcat 6.0\conf\server.xml: 代码如下:

CAS单点登录配置全过程

CAS配置全过程 软件工具: 1.cas-server-3.3.5-release.zip(CAS服务端) 2.cas-client- 3.1.10-release.zip(CAS客户端) 3.apache-tomcat-7.0.40 https://www.doczj.com/doc/fd15155903.html,mons-dbcp-all-1.3-r699049.jar 5.mysql-connector-java-5.1.18-bin.jar 6.cas-server-jdbc-3.0.5-rc2.jar 写在前面的话 此配置是根据当前系统,当前的版本,仅供参考,如果有什么其他的问题可以一起研究。 第一节:先走通技术障碍 第一步:环境部署 1.在Tomcat 根目录下创建一个cas目录。 2.下载CAS服务器并解压,打开cas-server- 3.3.5\modules,将cas-server-webapp-3.3.5.war复制到刚刚在Tomcat创建的cas目录下,并重命名为ROOT.war 3.修改host文件(C:\Windows\System32\drivers\etc)添加 127.0.0.1 https://www.doczj.com/doc/fd15155903.html, 注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,

可以不配置此项,下文有用到https://www.doczj.com/doc/fd15155903.html,,可以用相应PC机的IP代替 4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml) 添加内容: 5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入https://www.doczj.com/doc/fd15155903.html,:8080如果出现以下界面,则CAS服务端配置成功。 注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。 第二步:配置数据库验证 1.打开deployerConfigContext.xml,在apache-tomcat-7.0.40\cas\ROOT\WEB-INF目录下,找到如下代码: 添加下面代码: 2.增加数据源dataSource, 在deployerConfigContext.xml,(跟上面同一个文件)找到 ,在下面添

win8中tomcat8.0配置以及sts中启动的说明讲解

关于win8系统tomcat配置以及在sts中启动的说明1.下载tomcat(下载地址:https://https://www.doczj.com/doc/fd15155903.html,/) 本人下载的是tomcat8.0版本。 2.点击tomcat8.0进入下载选择界面 3.下载之后将下载的zip文件解压存放到某磁盘根目录下(也可放在其他位置,

但是路径中不要出现中文,本人放在D盘根目录下了) 4.由于是免安装的文件,因此下一步需要进行的就是配置环境变量(前提是在已经配置好jdk的情况下,配置jdk可以参考网上的教程) (1)右键点击我的电脑(这台电脑),点击属性出现如下界面 (2)点击上图中的高级系统设置进入下面界面,之后点击环境变量

(3)点击环境变量之后进入一下界面

(4)点击如图所示的新建按钮新建一个CATALINA_BASE变量,一个CATALINA_HOME 变量,变量值为tomcat文件夹的位置,本人的tomcat存放在D:\apache-tomcat-8.0.32

(5)选中PATH点击编辑,在变量值最后加上;%CATALINA_HOME%\bin;(如果原来在最后有”;”,则不用再%前加入”;”,若没有则需要加入,另外”;”必须为英文字符 (6)这样环境变量就测试完毕,接下来测试是否配置成功,使用快捷键windows+r 打开cmd,回车,之后输入startup回车,之后出现如下两图则表示配置成功。之后右键我的电脑(这台电脑)打开管理,找到服务,启动Apache Tomcat 8.0.32 Server之后打开浏览器输入Http://localhost:8080测试是否出现一下界面,若出现则成功(若出现问题则配置出现问题,或者之前有过tomcat残留文件,需要清空注册表重新配置)

CAS单点登录

CAS单点登录总结 一、服务端搭建 1.安装JDK。 2.安装Tomcat。安装版本Tomcat7.0. 3.在Tomcat上配置SSl (1)生成证书。在C盘根目录下建立子文件夹“Keys”,用于存放证书。在 JDK安装文件夹下的bin文件夹(C:\Program Files\Java\jre1.8.0_60\bin)下打开“命令窗口”。 (2)执行命令“keytool -genkey -alias tomcat -keyalg RSA -storepass changeit -keystore c:\keys\.keystore -validity 3600”创建证书。 (3)将证书导入的JDK的证书信任库中 第一步:导出证书。 执行命令“keytool -export -trustcacerts -alias tomcat -file c:\keys\tomcat.cer -keystore c:\keys\.keystore -storepass changeit”将证书导出到Keys文件夹。 第二步:将证书导入到JDK证书信任库。 执行命令“keytool -import -trustcacerts -alias tomcat -file c:\keys\tomcat.cer -keystore "C:\Program Files\Java\jre7\lib\security\cacerts" -storepass changeit”。系统询问 是否信任此证书,回答“y” 4、配置server.xml文件 用文本编辑器管理员身份运行,打开Tomcat7.0下的server.xml文件(C:\Program

CAS认证实现单点登录

CAS认证实现单点登录 一.背景 有几个相对独立的java的web应用系统,各自有自己的登陆验证功能,用户在使用不同的系统的时候,需要登陆不同的系统。现在需要提供一个 统一的登陆/登出界面,而不修改各个系统原来的登陆验证机制。于是采用单点登录系统开源单点登录产品CAS。 随着新的业务网站不断的增加,用户在每个应用系统中都有独立的账号,这样就造成在访问不同的应用系统时,需要记录对应的用户名和密码,多 个用户名密码极易记混,如果忘记或记错了某一个业务网站的用户名或密码就无法进行登录,耽误工作,影响工作效率 允许用户一次性进行认证之后,就访问系统中不同的应用 二.原理 CAS 是一个独立的web 应用, 当前使用Java Servlets 实现,通过HTTPS 协议保证其数据的传输安全性。它通过三个Url 地址进行访问:登录Url、验证URL、注销URL。

三. CAS认证集成 要使用单点登录,需要部署CAS系统,CAS服务端可以直接部署在tomcat下运行,对于CAS服务端来说,所有要集成单点登录的web应用都是它的一个客户端,CAS有客户端jar包,客户端web应用需要引入CAS客户端的jar包,这样CAS系统的服务端和客户端web应用程序端才能通信。 客户端web应用程序的通过配置web.xml,添加CAS需要的各种过滤器,来实现和CAS服务器通信,用户信息验证工作在CAS 服务端统一完成,验证通过后,客户端web应用程序只需要补全自己的Session信息即可。 3.1部署CAS系统服务端 步骤1:准备好以下运行环境 jdk1.6+

tomcat6+ jdk与tomcat的下载、安装、配置在此略过。 步骤2:安装部署cas-server 到官网(https://www.doczj.com/doc/fd15155903.html,/cas/cas-server-3.5.0-release.zip)下载cas-server-3.5.0-release.zip。解压缩以后,在其路 径 cas-server-3.5.0\modules 下面找到 cas-server-webapp-3.5.0.war,将其拷贝到 tomcat 的webapps 下,改名为 cas.war, 并修改 war 包中配置文件 cas.properties 里的 cas server name=cas 并启动 tomcat,启动后可在浏览器访 问 http://localhost:8080/cas/login

CAS实现单点登录(SSO)经典完整教程

一、简介 1、cas是有耶鲁大学研发的单点登录服务器 2、本教材所用环境 ?Tomcat7.2 ?JDK6 ?CAS Service 版本 cas-server-3.4.8-release ?CAS Client版本 cas-client-3.2.1-release 二、生成证书 证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了 JDK自带的证书生成工具keytool。当然在实际项目中你可以到专门的证书认证中心购买证书。 中文官方网站:https://www.doczj.com/doc/fd15155903.html,/cn/ 1、用JDK自带的keytool生成证书 view plain 1.命令:keytool -genkey -alias smalllove -keyalg RSA -keystore D:/keys/smallkey 此命令是生成一个证书,其中smalllove 是证书别名 此命令的执行如图所示:

其中名字与姓氏这一最好写你的域名,如果在单击测试你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一个虚拟域名,注意不要写IP。 2、导出证书 view plain

1.命令:C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey 如图: 密码为上步设置的密码。 3、把证书导入到客户端JDK中。 view plain 1.命令:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove 此命令是把证书导入到JDK中。 如图:

Tomcat完整教程

第一章 Tomcat概述 一、Tomcat简介 TOMCAT是APACHE JAKARTA软件组织的一个子项目,TOMCAT是一个JSP/SERVLET容器,它是在SUN公司的JSWDK(JAVA SERVER WEB DEVELOPMENT KIT)基础上发展起来的一个JSP和SERVLET规范的标准实现,使用TOMCAT可以体验JSP和SERVLET的最新规范。经过多年的发展,TOMCAT不仅是JSP和SERVLET规范的标准实现,而且具备了很多商业JAVA SERVLET容器的特性,并被一些企业用于商业用途。 1、Tomcat Tomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行Serlvet/JSP 的Web容器,不过Tomcat也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat 是一种具有JSP环境的Servlet容器。Servlet容器是代替用户管理和调用Servlet的运行时外壳。 1.1 SERVLET容器 负责处理客户请求。当客户请求来到时,SERVLET容器获取请求,然后调用某个SERVLET,并把SERVLET的执行结果返回给客户。 当客户请求某个资源时,SERVLET容器使用SERVLETREQUEST对象把客户的请求信息封装起来,然后调用JAVA SERVLET API中定义的SERVLET的一些生命周期方法,完成SERVLET的执行,接着把SERVLET执行的要返回给客户的结果封装到SERVLETRESPONSE对象中,最后SERVLET容器把客户的请求发送给客户,完成为客户的一次服务过程。 1.2 TOMCAT的工作模式 1.2.1 独立的SERVLET容器 TOMCAT的默认工作模式,作为独立的SERVLET容器,是内置在WEB服务器中的一部分,是指使用基于JAVA的WEB服务器的情形。 其他两种方式是TOMCAT与其他服务器集成的方式: 1.2.2 进程内的SERVLET容器 SERVLET容器作为WEB服务器的插件和JAVA容器的实现。WEB服务器的插件在内部地址空间打

CAS单点登录配置全过程

CAS配置全过程 说明:这里只是简单的配置了CAS单点登录的过程,并没有加入复杂的验证,也没有做MD5的校验。输入数据库中存在的用户名跟密码就会登录成功 一. 首先需要下载cas-server-3.4.2-release.zip包,这个包里面包含CAS Server服务器的war包。解压之后放到找到cas-server-3.4.2\modules 下的 cas-server-webapp-3.4.2.war , 拷tomcat\webapps\下并改名为cas.war。 启动tomcat后会在webapps下看到cas文件,然后停止tomcat. 二. 配置tomcat以及修改cas server的配置 1.生成证书并导入到jdk的jre中 请直接运行附件中的.bat文件会自动把证书生成在D盘根目录下并导入到jre 中 这是bat脚本内容 keytool -genkey -alias tomcatgecko -keyalg RSA -keystore d:\mykeystore -dname "CN=gecko-4d4611f2e, OU=gecko-4d4611f2e, O=gecko-4d4611f2e, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit keytool -export -alias tomcatgecko -keystore d:\mykeystore -file d:\mycerts.crt -storepass changeit keytool -import -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -file d:\mycerts.crt -alias tomcatgecko 这里要注意:证书是要导入到tomcat使用的jdk。不然CAS在跳转时会找不到本地域名脚本中红色的部分是写自己的计算机名称

CAS单点登录系统实操指南

CAS单点登录系统实操指南 CAS单点登录系统实操指南 (1) 1. CAS单点登录介绍 (3) 1.1. 什么是单点登录 (3) 1.2. 什么是CAS (3) 2. CAS服务端部署及配置 (5) 2.1. 基础部署配置 (5) 2.2. 去除https认证 (7) 2.3. 登录数据源设置 (8) 2.3.1 密码未加密处理 (8) 2.3.2 密码MD5加密配置 (9) 2.4. 登录页面的极简改造 (10) 3. CAS客户端搭建 (11) 3.1. 搭建工程并添加依赖 (11) 3.2. 单点登录配置 (12) 3.3. 单点登出配置 (14) 3.3.1 未重定向登出 (14) 3.3.2 重定向地址登出 (15) 3.4. 获取登录用户信息配置 (15) 4. CAS客户端与SpringSecurity集成 (16) 4.1. 搭建工程并添加依赖 (16)

4.2. 修改和创建配置文件 (18) 4.3. 创建Spring-security认证脚本 (22) 4.4. 获取登录名 (22)

1. CAS单点登录介绍 1.1. 什么是单点登录 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。 1.2. 什么是CAS CAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。CAS 具有以下特点:

单点登录_尚学堂CAS讲义

一.SSO (Single Sign-on)原理 SSO 分为Web-SSO和桌面SSO。桌面SSO 体现在操作系统级别上。Web-SSO体现在客户端,主要特点是:SSO 应用之间使用Web 协议( 如HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指Web SSO 。 SSO 的体系中,有下面三种角色: ?User(多个) ?Web应用(多个) ?SSO认证中心(一个) SSO 实现模式千奇百怪,但万变不离其宗,包含以下三个原则: ●所有的登录都在 SSO 认证中心进行。 ●SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的 用户。 ●SSO 认证中心和所有的 Web 应用建立一种信任关系。 二.CAS 的基本原理 CAS(Central Authentication Service) 是Yale 大学发起的构建Web SSO 的Java开源项目。 1.CAS 的结构体系 ◆CAS Server CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名/ 密码等凭证(Credentials) 。 ◆CAS Client CAS Client部署在客户端,当有对本地Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CAS Server 进行认证。 2.CAS 协议 基础协议

上图是一个基础的CAS 协议,CAS Client 以过滤器的方式保护Web 应用的受保护资源,过滤从客户端过来的每一个Web 请求,同时,CAS Client 会分析HTTP 请求中是否包请求Service Ticket( 上图中的Ticket) ,如果没有,则说明该用户是没有经过认证的,CAS Client 会重定向用户请求到CAS Server (Step 2 )。Step 3 是用户认证过程,如果用户提供了正确的认证信息,CAS Server 会产生一个随机的Service Ticket ,会向User 发送一个Ticket granting cookie (TGC) 给User 的浏览器,并且重定向用户到CAS Client (附带刚才产生的Service Ticket),Step 5 和Step6 是CAS Client 和CAS Server 之间完成了一个对用户的身份核实,用Ticket 查到Username ,认证通过。 3.CAS 如何实现SSO 当用户访问Helloservice2再次被重定向到CAS Server 的时候,CAS Server 会主动获到这个TGC cookie ,然后做下面的事情: 1)如果User 的持有TGC 且其还没失效,那么就走基础协议图的Step4 ,达到了 SSO 的效果。 2)如果TGC 失效,那么用户还是要重新认证( 走基础协议图的Step3) 。 三.实践配置 下面我们以tomcat 5.5 为例进行说明(这里,我将Server和Client同时放在了同一个Tomcat服务器下)。 软件环境:tomcat 5.5 ant-1.6.5, jdk1.5.0_06 下载cas-server-3.0.4.zip和cas-client和cas-server-jdbc-3.0.5-rc2.jar和mysql 5.0.16和tomcat 5.5.15 https://www.doczj.com/doc/fd15155903.html,/downloads/cas/cas-server-3.0.4.zip

CAS3.5.2单点登录详解

服务端cas: 从网上下载cas:https://www.doczj.com/doc/fd15155903.html,/ 在cas下: 在cas-client下: 解压cas-server-3.5.2-release.zip\cas-server-3.5.2\module\cas-server-webapp-3.5.2.war部署到tomcat上, 设置 F:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\cas-servlet.xml(大家取实际情况的路径) 默认为false,这个设置是为了让登出(logout)以后进入到指定页面. 设置deployerConfigContext.xml 配置数据源和加密: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@127.0.0.1:1521:orcl require require 然后注释掉下面这行,这行是为了测试使用,只要账号密码相同就可以通过验证

Eclipse之tomcat插件发布应用使用说明

Eclipse之tomcat插件应用发布操作说明 软件环境: 1)Eclipse4.3 2)Tomcat5.5.26 3)Tomcat插件3.3.0 下面的步骤是假定你已经安装好Eclipse的tomcat插件,然后在eclipse上发布应用: 1、打开“Window-->Preferences-->Tomcat”,如下图: 在tomcat version中,选择你使用的tomcat版本,这里的选择5.x。 在tomcat home中,选择tomcat的路径 在context declaration mode中,有两个选项:Server.xml和Context files。选择Server.xml 项,激活Configuration file输入框,选择Context files项,激活Context directory输入框。 这两项可以选择任何一个,有什么不同呢? ●选择Server.xml项,将会把项目的发布信息增加到tomcat目录下conf/server.xml 文件中。 ●选择Context files项,项目的发布信息独立写成一文件,放在conf/Catalina/localhost 目录中。 2、在“tomcat-->Advanced”中,tomcat base选择你tomcat所在的目录。

3、在“tomcat-->JVM Setting”中,你可以选择你的JRE版本。 其他的Source Path和Tomcat Managet App采用默认的设置,不需要做配置,完成之后,选

择OK,保存配置。 4、选中你要发布的项目,右键选择“属性-->tomcat”,如下图: 选上Is a Tomcat Project 上下文名可根据你的需要来填写,这个是访问应用的上下文,在这里是/mp,届时访问应用就是http://IP:port/mp。 其他选项可根据实际来配置,配置完成之后,点击OK。 5、启动tomcat,可以看到成功启动的信息,如下图:

CAS 单点登录操作文档

这人CAS 在 Tomcat 中实现单点登录 1证书生成及导入 1.1Server端证书配置 1.2 JAVA信任证书库 D:\Program Files\Java\jdk1.5.0\jre\lib\security\cacerts cacerts证书库默认密码-storepass changeit 查看证书 1.1.1.2 keytool -list -keystore cacerts -storepass changeit 如果存在则删除 1.1.1.1 keytool -delete -alias tomcatsso -keystore cacerts -storepass changeit 创建证书库 1.1.1.3 keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=https://www.doczj.com/doc/fd15155903.html," -keystore server.keystore -storepass 12345678 导出证书 1.1.1.4 keytool -export -alias tomcatsso -file tomcatsso.crt -keystore server.keystore -storepass 12345678 加入JAVA信任证书库 1.1.1.5 keytool -import -alias tomcatsso -file tomcatsso.crt -keystore ../jre/lib/security/cacerts -storepass changeit 说明:在生成key的过程,"cn=https://www.doczj.com/doc/fd15155903.html," 中的https://www.doczj.com/doc/fd15155903.html,为Server端的域名(必填)。 1.2.1TOMCAT 配置SSL支持

软件工程-使用CAS实现SSO简洁教程

目录 0. 文档介绍 (2) 0.1文档目的 (2) 0.2文档范围 (2) 0.3读者对象 (2) 0.4参考文献 (2) 0.5术语与缩写解释 (2) 1.概述 (3) 1.1背景 (3) 1.2环境 (3) 1.3下载资源 (3) 2. 配置CAS SERVER (4) 2.1简单配置 (4) 2.2数据库验证配置 (5) 2.3参数配置 (8) 2.4HTTPS验证配置 (10) 2.5自定义页面 (13) 3. 配置JAVA CLIENT (16) 3.1HTTPS验证 (16) 3.2HTTP验证 (18) 4. 配置DOTNET CLIENT (19) 5. 配置PHP CLIENT (23) 6. 如何实现单点注销 (23)

0. 文档介绍 0.1 文档目的 记录使用CAS实现SSO的过程。 0.2 文档范围 使用CAS实现SSO的过程。 0.3 读者对象 任何有兴趣的家伙。 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下:[标识符] 作者,文献名称,出版单位(或归属单位),日期 大部分都是网络上查询的资料,很多,不列举了。 0.5 术语与缩写解释

1.概述 1.1背景 单点登录是必须的,实现方式颇多,这里就说使用CAS的实现方式。使用CAS实现SSO,网络上说明很多,大部分都是从制作证书开始,而实际上是可以不使用HTTPS 验证,这样更方便。 单点登录的原理是通过拦截你设定的URL,并跳转到你指定的CAS SERVER登录页,当你登录成功后,带着TICKET,返回到你打开的URL。然后你就可以一票在手,畅通无阻。 网上有个家伙用旅游的套票来解释单点登录,非常形象。当你到达一个旅游区门口,你可以买一个套票,套票规定你可以游览N个景点,进入这些景点的时候,你不需要再买票,也就实现了单点登录。 同时,也可以借用这个比喻说明一下单点注销。当你打开一个应用A时,单击了注销按钮,跳转到http://hostname:port/cas/logout或者https://hostname:port/cas/logout,系统显示注销成功。此时,IE窗口没有关闭,你继续打开应用A,仍然没有注销成功,不需要登录。这就相当于你已经在旅游景点内,即使你把套票撕毁了,你仍然可以继续参观这个景点,不会把你驱逐出去。但是,你再也进不了其它的景点了。 那么怎么实现立即生效的注销呢?或者这种方式是否就满足我们的需求呢? 1.2环境 Windows XP、JDK1.6.03、Tomcat6.0.20 注意:配置好环境变量。 1.3下载资源 服务器端:https://www.doczj.com/doc/fd15155903.html,/downloads/cas 当前最新版本是3.3.4,测试安装的版本为3.3.3 cas-server-3.3.3-release.zip 客户端:https://https://www.doczj.com/doc/fd15155903.html,/svn/cas-clients/ cas-client-2.0.11.zip JAVA支持单点登录 cas-client-3.1.8-release.zip JAVA支持单点注销 dotnet-client DOTNET支持类 phpcas PHP支持

基于CAS模式的单点登录系统设计与分析

Computer Science and Application 计算机科学与应用, 2019, 9(7), 1434-1440 Published Online July 2019 in Hans. https://www.doczj.com/doc/fd15155903.html,/journal/csa https://https://www.doczj.com/doc/fd15155903.html,/10.12677/csa.2019.97161 Design and Analysis of Single Sign on System Based on CAS Mode Xiaowei Xu, Jinlei Wang, Wenfei Jiang, Fengjuan Cui North China Sea Data and Information Service, SOA, Qingdao Shandong Received: Jul. 9th, 2019; accepted: Jul. 22nd, 2019; published: Jul. 29th, 2019 Abstract In order to solve the problem of the integration of the existing business application system of NCS, this paper makes a deep research on the principle of CAS integrated authentication, and designs a single sign on system based on CAS mode. Based on the actual situation of various software systems of NCS, this paper analyzes the problems faced by various systems to achieve single sign-on, propos-es different solutions to these problems, and provides technical route for the integration of business application systems of NCS, so as to realize the construction of single sign-on system of NCS. Keywords CAS Authentication, SSO, System Integration 基于CAS模式的单点登录系统设计与分析 徐晓玮,王金磊,姜雯斐,崔凤娟 国家海洋局北海信息中心,山东青岛 收稿日期:2019年7月9日;录用日期:2019年7月22日;发布日期:2019年7月29日 摘要 针对自然资源部北海局现有业务应用系统整合问题,对CAS集成认证原理进行深入研究,设计搭建了基于CAS模式的单点登录系统。结合北海局各类软件系统的实际情况,分析各类系统实现单点登录所面临的问题,针对这些问题提出不同的解决方案,为北海局业务应用系统的整合集成提供技术路线,以实现北海局单点登录系统的建设。

相关主题
文本预览
相关文档 最新文档