zoukankan      html  css  js  c++  java
  • 单点登录的实现[转]

    转自: http://cxlh.javaeye.com/blog/256707

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

    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"  

    好了,利用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   

     修改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"/>  

     随便先搞个应用先,在另外的一个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>  

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

     

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

  • 相关阅读:
    使用图形化界面打包自己的类库
    搭建自己的NuGet服务器,上传自定义NuGet包
    在内部架设NuGet服务器
    Prism简介
    Nhibernate Icreteria 分页查询
    uDig介绍
    基于Geoserver配置多图层地图以及利用uDig来进行样式配置
    如何在GeoServer上发布一张地图
    XML的SelectNodes使用方法以及XPath
    coded ui run in interactive mode
  • 原文地址:https://www.cnblogs.com/jjj250/p/1890824.html
Copyright © 2011-2022 走看看