`

【推荐】单点登录的实现

阅读更多

想一下这样的应用场景,我目前在互联网上使用的产品较多,主要产品包括:

  1. 我在JavaEye上开了一个博客
  2. 我在Google开了一个Gmail邮箱
  3. 我在ZOHU中开了一个在线文档编辑的帐户
  4. 我在CSDN中有个论坛账号

开源产品实现: 我现在各个网站的登录账号不一,操作实在麻烦,我想设计一个模型,只要登录一次,我就能访问任何系统,怎么来实现呢?主要包括以下几个方面的工作:

  1. 我需要一个集中的用户目录来管理统一认证过程中的用户,并且可支持目前主流的SSO产品,这里我选用OpenLDAP
  2. 我需要一个SSO产品来实现统一认证,用IBM的TAM很容易实现,但抱歉,太庞大而且是商用的,这里我选用CAS
  3. 我需要一个简易的平台来实现单点登录口,并在登录成功之后显示:我的JavaEye博客,我的邮箱Gmail,我的在线文档,我的论坛,退出,其中点击任何系统,我都不需要再次登录,多美好的事情

好了,应用场景说完了,现在来说实现,先来架一个LDAP服务器吧,下载一个openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe,按提示全部下一步,安装完成之后配置一下slapd.conf,关注以下配置信息的改动:

Xml代码 复制代码
  1. include     ./schema/core.schema   
  2. include     ./schema/cosine.schema   
  3. include     ./schema/inetorgperson.schema   
  4.   
  5. database    bdb   
  6. suffix      "o=me,c=cn"   
  7. rootdn      "cn=manager,o=me,c=cn"  
include		./schema/core.schema
include		./schema/cosine.schema
include		./schema/inetorgperson.schema

database	bdb
suffix		"o=me,c=cn"
rootdn		"cn=manager,o=me,c=cn"

好了,利用lbe工具,以管理员cn=manager/secret的身份登录,配置一个单点登录的账号,如my/my,这样,ldap配置就告一段落。

安装CAS—Server:

首先让Tomcat支持SSL,下载JSSE工具,通过以下命令建立证书:

 

Java代码 复制代码
  1. 生成:keytool -genkey -alias tomcat -keyalg RSA    
  2. 导出证书:keytool -export -alias tomcat -file server.crt   
  3. 导入证书:keytool -import -trustcacerts -alias tomcat -file server.crt -keystore "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts"    
  4. 显示:keytool -list -v -keystore "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts" > t.txt    
  5. 删除:keytool -delete -alias tomcat -keystore  "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts" -keypass changeit   
生成:keytool -genkey -alias tomcat -keyalg RSA 
导出证书:keytool -export -alias tomcat -file server.crt
导入证书:keytool -import -trustcacerts -alias tomcat -file server.crt -keystore "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts" 
显示:keytool -list -v -keystore "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts" > t.txt 
删除:keytool -delete -alias tomcat -keystore  "C:/Program Files/Java/jdk1.6.0/jre/lib/security/cacerts" -keypass changeit 

 修改Tomcat\conf目录下的Server.xml文件,让他支持SSL:

Xml代码 复制代码
  1.   <Connector port="8443" keystorePass="changeit" keystoreFile="conf/.keystore"  maxHttpHeaderSize="8192"  
  2.              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
  3.              enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" scheme="https" secure="true"  
  4.              connectionTimeout="50000" disableUploadTimeout="true"  
  5. clientAuth="false" sslProtocol="TLS"/>  
    <Connector port="8443" keystorePass="changeit" keystoreFile="conf/.keystore"  maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" scheme="https" secure="true"
               connectionTimeout="50000" disableUploadTimeout="true"
		clientAuth="false" sslProtocol="TLS"/>

 随便先搞个应用先,在另外的一个Tomcat(模拟集成系统,如命名为demo2)放一个Web应用,然后在此应用的web.xml中加入CAS过滤器即可:

Xml代码 复制代码
  1. <!-- CAS Filters -->  
  2.     <filter>  
  3.         <filter-name>CASFilter</filter-name>  
  4.         <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>  
  5.         <init-param>  
  6.             <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>  
  7.             <param-value>https://localhost:8443/cas/login</param-value>  
  8.         </init-param>  
  9.         <init-param>  
  10.             <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>  
  11.             <param-value>https://localhost:8443/cas/proxyValidate</param-value>  
  12.         </init-param>  
  13.         <init-param>  
  14.           <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>  
  15.           <param-value>localhost</param-value>  
  16.         </init-param>  
  17.     </filter>  
  18.       
  19.     <filter-mapping>  
  20.         <filter-name>CASFilter</filter-name>  
  21.         <url-pattern>/*</url-pattern>  
  22.     </filter-mapping>  
<!-- CAS Filters -->
    <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://localhost:8443/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
            <param-value>https://localhost:8443/cas/proxyValidate</param-value>
        </init-param>
        <init-param>
          <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
          <param-value>localhost</param-value>
        </init-param>
    </filter>
   
    <filter-mapping>
        <filter-name>CASFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 这样当访问demo2下的所有访问时,都会被重定向到统一认证登陆口(CAS登录口),登录会就能访问demo2应用了。

 

商用产品实现: IBM的TDS+TIM+TAM产品套件可轻松实现,其中单点登录可基于IBM的FSSO技术即可,这里不再讲述,一般人都用不起这套产品的(属于IBM的SOA产品套件)

有不同意见,欢迎拍砖讨论!

分享到:
评论

相关推荐

    JAVA单点登录的实现

    1,通过session会话来判断 2,实现单点登录

    shiro实现单点登录

    通过以上步骤,我们便能成功地利用Spring、Shiro、Spring Data Redis和Spring Session Data Redis实现单点登录功能。这个解决方案不仅提供了便捷的用户体验,还降低了系统复杂性,提高了安全性。在实际开发中,可以...

    Springboot+shiro单点登录实现.md

    Springboot+shiro单点登录实现,本文档是单点登录的全部源代码。

    基于Cas的单点登录实现

    **基于Cas的单点登录实现** 单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。它为用户提供了一种方便、高效的访问多系统的方式,同时减少...

    用友U8开发单点登录方案

    本文主要介绍了用友U8开发单点登录方案的设计背景、应用场景、实现方式和技术细节。单点登录方案的设计目标是实现非U8系统与U8系统的集成,共享用户名和密码,实现单点登录。 设计背景 随着企业IT系统的发展,系统...

    exchange邮件系统单点登录整合

    ### Exchange邮件系统单点登录整合知识点 #### 一、单点登录(Single Sign-On, SSO)概述 ...通过上述步骤,可以实现Exchange邮件系统与OA系统的单点登录整合,提高用户的使用效率并加强了企业的信息安全。

    jsp如何实现单点登录

    **JSP实现单点登录(Single Sign-On,SSO)详解** 在Web应用程序中,单点登录(Single Sign-On,SSO)是一种便捷的身份验证机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次输入凭证。在...

    cas 单点登录 解决方案.

    cas 单点登录解决方案可以通过多种方式来实现,例如使用 cas 服务器、LDAP 服务器、Active Directory 等。 cas 服务器可以作为身份验证服务器,LDAP 服务器可以作为用户信息存储服务器,Active Directory 可以作为...

    JEECG 单点登录说明文档

    整个JEECG智能开发平台v3的单点登录实现,通过Kisso框架,既保证了功能的全面,又兼顾了配置的简便性和系统的扩展性。文档中也提到,通过访问官方论坛和加入相关QQ群,开发者可以获取更多的支持和交流。 需要注意的...

    基于JWT实现SSO单点登录流程图解

    基于JWT实现SSO单点登录流程图解 基于JWT实现SSO单点登录流程图解是指使用JSON Web Token(JWT)来实现单点登录(SSO)的机制。在这种机制中,用户只需要登录一次,就可以访问多个应用服务器上的资源,而不需要再次...

    基于SpringBoot实现单点登录的两种方式

    基于SpringBoot实现单点登录的两种方式,第一种(Session):SpringBoot+SpringSession+Redis;第二种基于(Session+Cookie):SpringBoot+Redis(redis集群+池化:一致性Hash分片算法) 实现单点登陆

    OAuth2.0授权系统实现单点登录

    通过研究这个项目,开发者可以学习如何在实际环境中部署和配置OAuth2.0,以及如何设计和实现单点登录解决方案,这对于构建安全的、多应用集成的网络环境非常有价值。同时,它也有助于深入理解授权和身份验证的原理,...

    PHP 使用TP5.0 实现SSO单点登录

    因为公司要实现SSO单点登录的效果,最近在网上找了一些资料,但是都没有好用的, 所以自己用PHP 使用TP5.0 实现了SSO单点登录,可以跨多个域名。 下载后在本地配置好 A,B,C 3个网站,就可以模拟效果了。

    java跨域单点登录实现

    Java跨域单点登录(Single Sign-On,SSO)实现是一项关键的系统集成技术,它允许用户在多个应用系统中只需登录一次,就能访问所有相互信任的应用系统,无需再次进行身份验证。本项目代码着重展示了如何在Java环境中...

    单点登陆实现(完全跨域、单点退出)

    在这个例子中,我们基于Spring MVC、Maven、WebService和Memcached来实现一个功能完善的单点登录系统,同时支持完全跨域和单点退出。 1. **Spring MVC**: Spring MVC是Spring框架的一个模块,主要用于构建Web应用...

    单点登录的实现_单点登录_

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在现代企业级应用环境中,用户经常需要在不同的应用之间切换,SSO能显著提高用户...

    C#.net实现单点登录

    在IT行业中,C#.NET框架提供了丰富的功能来实现跨域单点登录。下面将详细讲解如何在ASP.NET环境下实现这一功能。 首先,SSO的核心在于有一个中心认证服务器,它负责验证用户的登录状态。在本案例中,`MasterSite`...

    SSO单点登录实现方案

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 本示例简单的实现了SSO认证系统,...

    华为防火墙实现单点登录方式.docx

    华为防火墙实现单点登录方式 单点登录是一种技术,以避免用户在多个地方进行多次认证。用户的身份信息通常记录在专门的服务器中,如微软的Active Directory、华为的Agile Controller、Radius、HWTACACS等。然后,...

    关于SSO单点登录的简单实现

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。这个过程提高了用户体验,同时也简化了安全管理。在本文中,我们将探讨SSO的基本原理...

Global site tag (gtag.js) - Google Analytics