部署CAS单点登录服务器

Posted on

部署CAS单点登录服务器 - 萧飒的日志 - 网易博客

网易

新闻微博邮箱相册阅读有道摄影爱拍云笔记闪电邮手机邮印像派游戏江湖 更多

博客

手机博客博客搬家博客VIP服务 LiveWriter写博word写博邮件写博短信写博 群博客博客油菜地博客话题博客热点博客圈子找朋友 发现

小组 风格

网易真人搭配社区iStyle

网易轻博客LOFTER

创建博客 登录

加关注

显示下一条 | 关闭

萧飒的博客

未来的成功往往是现在无法想象的……

导航

日志

cas改造随笔

jsessionid的困扰

部署CAS单点登录服务器

2012-05-03 15:16:28| 分类: 编程 | 标签: |字号大中小 订阅

第0步:环境配置

操作系统:CentOS 5.5 64位

JDK:1.7

Tomcat:7.0

CAS Server:3.4.11

CAS Client:3.2.1

第1步:安装JAVA并设置环境变量

http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html

下载并安装Linux x64 RPM包 rpm -i jdk-7u3-linux-x64.rpm

设置环境变量

vi /etc/profile

加入

JAVA_HOME=/usr/java/jdk1.7.0_03 export JAVA_HOME

方便操作将keytool加入/usr/bin/

ln -s /usr/java/jdk1.7.0_03/bin/keytool /usr/bin/keytool

第2步:安装Tomcat

http://tomcat.apache.org/download-70.cgi

下载Tomcat并解压

tar -zxvf apache-tomcat-7.0.26.tar.gz

方便操作将启动关闭加入/usr/bin/ ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/tomcat-start ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/tomcat-stop

第3步:创建、导出、导入证书

创建一个生成证书的脚本 vi create_https_cert.sh /# 删除原证书库 keytool -delete -keystore /home/cas/cascerts -storepass changeit /# 删除原别名 keytool -delete -alias sgstsso -storepass changeit /# 生成证书,需要注意的是dname需要使用域名或主机名,不能用IP,keystore 为生成的证书库地址,后面TOMCAT会用到 keytool -genkey -keyalg RSA -alias sgstsso -keystore /home/cas/cascerts -dname "CN=cas.sgst.cn" -storepass changeit /# 导出证书,导出的证书用在各客户端的JDK导入 keytool -export -alias sgstsso -keystore /home/cas/cascerts -file /home/cas/sgstsso.crt -storepass changeit /# 导入证书 keytool -import -alias sgstsso -file /home/cas/sgstsso.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

执行该脚本。

第4步:应用证书到Tomcat

编辑conf/server.xml加入下面这段(如果8443 https已开启使用的则在其基础上修改)

重启Tomcat,访问https://localhost:8443,如果能否访问则配置成功。

第5步:配置CAS服务器

http://www.jasig.org/cas/download下载CAS Server 3.4.11 Release压缩包

解压后将其中的cas-server-3.4.11.war改名为cas.war放在tomcat下面

此时打开https://localhost:8443/cas/login即可访问

输入sgst/sgst登录成功(默认为简单认证,即用户名密码一样就算通过)

编辑tomcat/conf/server.xml在原Host下面增加以下这段

这样实现以https://cas.sgst.cn:8443 访问cas

CAS的认证改为查询数据库用户名密码验证:

编辑cas/WEB-INF/deployerConfigContext.xml

注释掉,新增下面这段

上面的加密根据个人需求可自行开发,这里用的是MD5 64位加密,以一个独立bean跟在后面

casDataSource则同样以一个独立bean跟在后面 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.29.104)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.29.105)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.29.106)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = genome))) trs_ids 123456

保存该文件,复制压缩包中的modules里的cas-server-support-jdbc-3.4.11.jar和ojdbc14.jar到cas/WEB-INF/lib下

重启Tomcat后CAS便以用户名密码进行验证。

第6步:配置CAS客户端

http://www.jasig.org/cas/client-integration参考适合的客户端,JAVA的在这里下载http://downloads.jasig.org/cas-clients/

客户端中相应的JAR包都有,对应的maven为 org.jasig.cas.client cas-client-core 3.2.1

修改web.xml增加以下filter

org.jasig.cas.client.session.SingleSignOutHttpSessionListener CAS Single Sign Out Filter org.jasig.cas.client.session.SingleSignOutFilter CAS Single Sign Out Filter /check// CASFilter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl https://cas.sgst.cn:8443/login serverName http://localhost:8080 CASFilter /check// CAS Validation Filter org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter casServerUrlPrefix https://cas.sgst.cn:8443 serverName http://localhost:8080 CAS Validation Filter /check// CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CAS HttpServletRequest Wrapper Filter /check// CAS Assertion Thread Local Filter org.jasig.cas.client.util.AssertionThreadLocalFilter CAS Assertion Thread Local Filter /check//*

2012-03-21更新: CAS filter-mapping一定要放在整个项目的encodingFilter之后,否则会造成中文乱码

第7步:美化服务器界面

具体页面在cas\WEB-INF\view\jsp\default\ui\

登录界面:casLoginView.jsp 登录成功:casGenericSuccess.jsp 登出界面:casLogoutView.jsp 评论这张

转发至微博 转发至微博

0人 | 分享到:

阅读(7)| 评论(0)| 转载 (0) |举报

cas改造随笔

jsessionid的困扰

历史上的今天

相关文章

最近读者

评论

this.p={ m:2, b:2, id:'fks_087066086087081064092094095065072084088074084084085069087', blogTitle:'部署CAS单点登录服务器', blogAbstract:'

第0步:环境配置

操作系统:CentOS 5.5 64位

JDK:1.7

Tomcat:7.0

CAS Server:3.4.11

CAS Client:3.2.1', blogTag:'编程', blogUrl:'blog/static/2990236320124331628240', isPublished:1, istop:false, type:0, modifyTime:0, publishTime:1336029388240, permalink:'blog/static/2990236320124331628240', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'北京', visitorCity:'西城区', postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:true, hostIntro:'我,犯溅一样的猪一样的懒,无语……', hmcon:'1', selfRecomBlogCount:'0', lofter_single:'' } {list a as x} {if !!x}

{if x.visitorName==visitor.userName} ${x.visitorNickname|escape} {else} ${x.visitorNickname|escape} {/if}
{if x.moveFrom=='wap'} {elseif x.moveFrom=='iphone'} {elseif x.moveFrom=='android'} {elseif x.moveFrom=='mobile'} {/if} ${fn(x.visitorNickname,8)|escape}
{/if} {/list} {if !!a} ${fn(a.nickname,8)|escape}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{/if} </#--最新日志,群博日志--> {list a as x} {if !!x}
  • ${fn(x.title,26)|escape}
  • {/if} {/list} </#--推荐日志-->

    推荐过这篇日志的人:

    {list a as x} {if !!x} {/if} {/list}
    {if !!b&&b.length>0}

    他们还推荐了:

    {/if} </#--引用记录--> 转载记录: </#--博主推荐--> {list a as x} {if !!x}
  • ${x.title|default:""|escape}
  • {/if} {/list} </#--随机阅读--> {list a as x} {if !!x}
  • ${x.title|default:""|escape}
  • {/if} {/list} </#--首页推荐--> {list a as x} {if !!x}
  • ${x.blogTile|default:""|escape}
  • {/if} {/list} </#--相关文章-->
      {list a as x} {if x_index>9}{break}{/if} {if !!x}
    • ${x.title|default:""|escape}${fn2(parseInt(x.date),'yyyy-MM-dd HH:mm:ss')}
    • {/if} {/list}
    </#--历史上的今天-->
      {list a as x} {if x_index>4}{break}{/if} {if !!x}
    • ${fn1(x.title,60)|escape}${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
    • {/if} {/list}
    </#--被推荐日志--> {list a as x} {if !!x}
  • ${fn(x.title,26)|escape}
  • {/if} {/list} </#--右边模块结构-->

    被推荐日志

      最新日志

        该作者的其他文章

          博主推荐

            相关日志

              随机阅读

                首页推荐



                  </#--评论模块结构-->
                  </#--引用模块结构-->
                  </#--博主发起的投票--> {list a as x} {if !!x}
                • ${x.nickName|escape} 投票给 {var first_option = true;} {list x.voteDetailList as voteToOption} {if voteToOption==1} {if first_option==false},{/if} “${b[voteToOption_index]}” {/if} {/list} {if (x.role!="-1") },“我是${c[x.role]}” {/if} ${fn1(x.voteTime)} {if x.userName==''}{/if} {/if} {/list}

                  页脚

                  公司简介 - 联系方法 - 招聘信息 - 客户服务 - 隐私政策 - 博客风格 - 手机博客 - VIP博客 - 订阅此博客

                  网易公司版权所有 ©1997-2012

                  帮助 ${u} {list wl as x}

                  ${x.g}
                  {list x.l as y} ${y.n} {/list} {/list} {if defined('wl')} {list wl as x}${x.n}{/list} {/if}

                • 希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
                  转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途