`

cas(sso)服务器

    博客分类:
  • sso
 
阅读更多



 

1.cas4.0server端下载地址 

迅雷地址:http://developer.jasig.org/cas/cas-server-4.0.0-release.zip

也可以去最新的地址:

https://www.apereo.org/projects/cas/download-cas或者http://developer.jasig.org/cas/选择你需要的下载 

2. 部署cas服务 

 

解压cas-server-4.0.0-release.zip后拷贝出cas-server-4.0.0\modules的cas-server-webapp-4.0.0.war到tomcat的webapp目录,重命名为cas

 

3.创建证书(下面会用到)

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,当然现在也有免费。

keytool -genkey -alias tomcatcas -keystore d://castest -keyalg RSA -validity 3666

 详细操作:



 
因为sso.castest.com不存在,估需要修改hosts文件 (C:\Windows\System32\drivers\etc\hosts)

增加:127.0.0.1 sso.castest.com

4.导出证书

证书导出:

keytool -export -alias tomcatcas -keystore d://castest  -file d://tomcatcas.crt

 


 

5.为客户端的JVM导入证书

如果命令中存在空格,命令将报错

keytool -import -keystore D:\software\Java\jdk1.8.0_20\jre\lib\security\cacerts -file D:/tomcatcas.crt -alias tomcatcas

 

 

 注意:这里需要输入密码,此密码不是前面设定的密码,是DK安装后会默认创建一个密钥库,密码为:changeit

D:\software\Java\jdk1.8.0_20\jre\lib\security\ -- 是jre的目录;至此证书的创建、导出、导入到客户端JVM都已完成,下面开始使用证书到Web服务器中

 

6. 启用Web服务器(Tomcat)的SSL,也就是HTTPS加密协议

 

打开tomcat目录的conf/server.xml文件,取消开启84和88行左右的注释代码,并设置keystoreFile、keystorePass修改结果如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystorefile="D:/wsriakey" keystorepass="castest"/> 

    参数说明:

  • keystoreFile:在第一步创建的key存放位置
  • keystorePass:创建证书时的密码
 7.简单配置CAS SERVER后进行验证
  启动tomcat后浏览器输入http://sso.castest.com:8443/cas/
注意:cas4.0以前主需要用户名和密码相同即可,但是4.0后默认的用户名/密码: casuser/Mellon否则会报“cas Invalid credentials.”提示
 成功进入cas登录页面

 
8. casserver的数据验证配置
需要依赖的jar:c3p0-0.9.1.2.jar,mysql-connector-java-5.1.21.jar,cas-server-support-jdbc-4.0.0.jar拷贝到cas\WEB-INF\lib下
对配置文件修改:
tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml
1).注释默认的简单登录配置
<!--
 <bean id="primaryAuthenticationHandler"
     class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
     <property name="users">
        <map>
          <entry key="casuser" value="Mellon"/>
        </map>
      </property>
  </bean>
    -->
 2).增加数据库连接 
<!-- Define the DB Connection -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
   p:driverClass="com.mysql.jdbc.Driver"
   p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"
   p:user="root"
   p:password="root" />
 
<!-- Define the encode method-->     
<bean id="passwordEncoder" 
      class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
      c:encodingAlgorithm="MD5"
      p:characterEncoding="UTF-8" />
 
<bean id="dbAuthHandler"
      class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
      p:dataSource-ref="dataSource"
      p:sql="select password from xxxx where name=?"
      p:passwordEncoder-ref="passwordEncoder"/>
     <!-- p:passwordEncoder-ref="passwordEncoder"如果无加密不需要 passwordEncoder bean 与p:passwordEncoder-->
  3).更换验证Handle(找到id=authenticationManager的bean)
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
    <constructor-arg>
      <map>
        <!--
         | IMPORTANT
         | Every handler requires a unique name.
         | If more than one instance of the same handler class is configured, you must explicitly
         | set its name to something other than its default name (typically the simple class name).
         -->
     <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
     <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />      <!-- <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" /> -->
    </map>
 </constructor-arg>
</bean>
 是为了注释掉key-ref="primaryAuthenticationHandler"的部分,然后引入id=dbAuthHandler的bean之后重启tomcat 进行验证.服务端就配置完成
 
8.客户端配置 
1). 增加cas-client的jar包(cas-client-core-3.4.1.jar),有两种方式:
  • 传统型 :下载cas-client,地址:http://developer.jasig.org/cas-clients/,然后解压cas-client-3.1.12.zip,在modules或者WEB-INF文件夹中,请根据自己的项目情况选择使用
  • Maven
    <dependency>
    	<groupId>org.jasig.cas.client</groupId>
    	<artifactId>cas-client-core</artifactId>
    	<version>3.4.1</version>
    </dependency>
     

 

2).客户端所有的web.xml配置

<!-- ======================== 单点登录/登出 ======================== -->

<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
<filter>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>

<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
  <filter-name>CAS Authentication Filter</filter-name>
  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>https://localhost:8443/cas/login</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://localhost:8080</param-value>
  </init-param>
</filter>

<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>https://localhost:8443/cas</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8080</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<!-- 该过滤器负责实现HttpServletRequest请求的包裹,
比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
<filter>
  <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>

<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
 比如AssertionHolder.getAssertion().getPrincipal().getName()。-->
<filter>
  <filter-name>CAS Assertion Thread Local Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- ======================== 单点登录/登出结束 ======================== -->
 
 9客户端与shiro进行整合配置
 1).增加需要的jar包
shiro-cas-1.2.4.jarcas-client-core-3.4.1.jar(下载参考第8步)
<dependency>
	<groupId>org.apache.shiro</groupId>
	<artifactId>shiro-cas</artifactId>
	<version>1.2.4</version>
</dependency>
 2)修改shiro的配置(spring-shiro.xml)
  • 修改shiroFilter:
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    		<property name="securityManager" ref="securityManager" />
    		<!-- 设定角色的登录链接,这里为cas登录页面的链接可配置回调地址  -->    
            <property name="loginUrl" value="http://sso.castest.com:7443/cas/login?service=http://localhost:8080/admin/login.htm" />    
            <property name="successUrl" value="http://localhost:8080/admin/index.htm"></property> <!-- 加这句会出现页面循坏重定向 -->  
            <property name="filters">    
                <map>    
                    <entry key="casFilter" >  
                     <bean class="org.apache.shiro.cas.CasFilter">  
                                            <!--配置验证错误时的失败页面 /main 为系统登录页面 -->  
                            <property name="failureUrl" value="/login.htm" />  
                        </bean>  
                    </entry>    
                </map>    
            </property> 
            
    		<property name="unauthorizedUrl" value="/unauthorized.htm" />
    		<property name="filterChainDefinitions">
    			<value>
    				/favicon.ico = anon
    				/login.htm = anon
    				/error/ajaxUnauthorized.htm = anon
    				/doRegister.htm = anon
    				/doAjaxLogin.htm = anon
    				/logout.htm = logout
    				/service/*.htm=anon
    				/*.htm= authc
    				/**/*.htm=authc
    			</value>
    		</property>
    	</bean>
     
  • shiroRealm的配置中添加两个属性,分别为cas服务器的登录地址和cas客户端的入口即会被拦截的地址:
    <!--自定义Realm 继承自CasRealm -->
    	<bean id="shiroJdbcRealm" class="com.lz.core.shiro.ShiroJdbcRealm">
    	   <property name="casServerUrlPrefix" value="http://sso.castest.com:7443/cas/"/> <!-- 一定是ip+port+context path -->  
           <property name="casService" value="http://localhost:8080/admin/doLogin.htm"/> <!-- 没有这句,认证不会通过,casfilter失败 -->  
    	</bean>
     
  • 在securityManager的配置中加入属性:
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    		<!--设置自定义realm -->
    		<property name="realm" ref="shiroJdbcRealm" />
    		<property name="cacheManager" ref="shiroCacheManager" />
    		<property name="subjectFactory" ref="casSubjectFactory"/> <!-- 增加CasSubject -->
    	</bean>
     
  • 加入casSubjectFactory Bean的配置 
    <bean id="casSubjectFactory" class="org.apache.shiro.cas.CasSubjectFactory"/>  <!-- 引入CasSubject -->
     
 
参考页面
http://dead-knight.iteye.com/blog/1525671
http://blog.csdn.net/zhuojiajin/article/details/42973251
http://blog.csdn.net/ppt0501/article/details/41728819
  • 大小: 162.5 KB
  • 描述: jdk生成证书
  • 大小: 24.2 KB
  • 大小: 5.7 KB
  • 大小: 28.8 KB
  • 大小: 28.5 KB
  • 大小: 21.2 KB
分享到:
评论

相关推荐

    CAS SSO配置文档详解

    CAS学习笔记 --CAS的服务器配置和各种客户端的配置

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析 http://blog.csdn.net/ae6623/article/details/8848107 目 录 1 引言 4 1.1 摘要 4 1.2 范围 4 1.3 读者对象 4 1.4 关键词 4 2 ...

    cas-5.3.8.zip

    我们今天选用的这个是耶鲁大学发明的CAS SSO服务器。这个CAS SSO是目前我看到过的功能较全的,使用也是最简单的配置式SSO服务器,它基于SPRING的原理,因此这个配置文件我们看起来因当是相当的熟悉的。

    CAS框架SSO的实现.rar

    1、CAS服务器端安装包 2、客户端源码包和所需的所有jar包 3、CAS+框架+SSO的实现.pdf 5、CAS+SSO实例安装和配置指南PDF版.rar 6、Tomcat中使用Yale+CAS实现单点登陆(SSO).doc 7、以及本人的搭建过程中所遇到得问题和...

    单点登录sso-shiro-cas-maven

    # sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库...

    cas单点登录服务器资源下载

    当服务器在成功登录时向用户发出票证授予票证(TGT)时,将创建SSO会话。 根据用户的请求,通过使用TGT作为标记的浏览器重定向向服务发出服务票据(ST)。 ST随后通过反向信道通信在CAS服务器上进行验证。 CAS ...

    cas所需jar包(服务器+客户端)

    cas sso 单点登录 client server

    原创CAS_SSO单点登录实例详细

    在IDP上下载和部署CAS 服务器..................................................................................... 7 七. 测试SSO............................................................................

    cassso:使用cas框架来实现统一登录(单点登录)功能

    cassso 使用cas框架来实现统一登录(单点登录)功能 cas服务器安装步骤: 1,在本地配置多个域名。如:, news.cobee.com.cn, blog.cobee.com.cn 2,生成安全访问证书: a, 用java工具keytool生成用户身份证书 ...

    耶鲁大学单点CAS服务器

    该资源不仅提供部署在Tomcat服务器上的cas.war包(解压缩后在webapps目录下),而且创建Mysql数据源,完成用户表中用户信息的认证。 deployerConfigContext.xml中创建MySql数据源如下: &lt;value&gt;...

    cas服务器代码

    cas服务器代码,实现系统sso,可以自己动手修改界面,gradle项目

    sso单点登录之cas配置全过程

    此文档自己亲手从0开始一步一步配置的详尽过程,其中包括keytool创建 、ticket、tomcat配置cas、自定义登录页面,处理服务器返回的乱码,服务退出、cas服务器返回多数据等等文档 包括SSO原理图,以及认证流程图等

    CAS+TOMCAT实现单点登录SSO

    cas-server-3.3.1-release.zip服务器端所有资源包 cas-client-java-2.1.1.zip客户端源码包 casclient-2.1.1.jar客户端JAR包 说明.doc,完整的说明帮助文档

    cas服务器war包(通过数据库认证)

    里面包含了cas-server cas-calient server.xml 密钥库文件 实现了cas服务端通过数据库认证。不懂的朋友可以参考我的博客《用CAS实现SSO(单点登录)+数据库读取》

    koa2-sso:也是cas中间件

    这是设计用于Koa服务器的CAS身份验证库。 它提供了两个中间件功能来控制对路由的访问: bounce :将未经身份验证的客户端重定向到CAS登录页面,然后返回到请求的页面。 block :完全拒绝访问未经身份验证的客户端...

    CAS服务器端与客户端jar包(服务器端)

    单点登录(CAS)的服务器与客户端jar包文件

    Laravel开发-cas

    Laravel开发-cas 将CAS服务器SSO身份验证添加到Laravel 4.x

    java-cas-client-3.2.0

    Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 ...

Global site tag (gtag.js) - Google Analytics