浏览 4161 次
锁定老帖子 主题:cas入门
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-13  

 

1、简介
官方网站:http://www.ja-sig.org/products/cas/
2、安装
服务端安装:linux s3,apache-tomcat-6.0.10,jdk1.5.0_08
下载:
CAS Server 3.0.7 Final (stable)

部署cas-server-3.0.7\target\cas.war到tomcat
启用tomcat的ssl:
生成keystore:
[oracle@localhost cas]$ rm ~/.keystore
[oracle@localhost cas]$ $JAVA_HOME/bin/keytool/keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码: helloworld
您的名字与姓氏是什么?
[Unknown]: helloword.test.com --注意:在后面配置客户端时认证url的host部分一定要和此处所填写的一样。另外,此处填写根据客户机访问服务器的方式,有三种选择。1、 服务器,客户机都在互联网上,客户机只能通过域名访问服务器。那么就只能填写服务器的域名。2、服务器,客户机在同一局域网内,客户机可以通过主机名访问服务器时。那么就可以填写服务的主机名。3、如果客户端,服务端在同一台机器上就可以填写localhost。
您的组织单位名称是什么?
[Unknown]: helloword
您的组织名称是什么?
[Unknown]: helloword
您所在的城市或区域名称是什么?
[Unknown]: bj
您所在的州或省份名称是什么?
[Unknown]: bj
该单位的两字母国家代码是什么
[Unknown]: CN
CN=helloword.test.com, OU=helloword, O=helloword, L=bj, ST=bj, C=CN 正确吗?
[否]: y
输入的主密码
(如果和 keystore 密码相同,按回车):
[oracle@localhost cas]$
修改tomcat配置,开放https服务:
在apache-tomcat-6.0.10/conf/server.xml中找到
<connector maxhttpheadersize="8192" port="8443">
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" /> </connector>

去掉前后的注释符修改成

<connector maxhttpheadersize="8192" port="8443">
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false"
keystorePass="helloworld "
sslProtocol="TLS" /></connector>

启动tomcat,浏览https://helloword.test.com:8443/cas/。出现登陆界面,用户名和密码输入相同的任意字符串,登陆成功!即宣告服务器配置完成。
导出keystore,供客户端使用:
[oracle@localhost cas]$ keytool -export -alias tomcat -file server.crt
输入keystore密码: helloworld
保存在文件中的认证

Yale Java Client
2.1.1
Download

把服务器导出的认证文件server.crt拷贝到客户端机器%JAVA_HOME%\jre\lib\security\server.crt
在客户端机器倒入服务器证书:
D:\cas>cd %JAVA_HOME%\jre\lib\security\
D:\Program Files\Java\jdk1.5.0_06\jre\lib\security>del cacerts
D:\Program Files\Java\jdk1.5.0_06\jre\lib\security>keytool -import -trustcacerts -alias tomcat -file d:\cas\server.crt -keystore cacerts
输入keystore密码: helloworld
Owner: CN=helloword.test.com, OU=helloword, O=helloword, L=bj, ST=bj, C=CN
发照者: CN=helloword.test.com, OU=helloword, O=helloword, L=bj, ST=bj, C=CN
序号: 465bb49d
有效期间: Tue May 29 13:05:33 CST 2007 至: Mon Aug 27 13:05:33 CST 2007
认证指纹:
MD5: 64:EB:B1:12:05:0E:8C:73:E1:B8:71:30:05:DD:54:65
SHA1: B6:3A:7C:25:2D:14:C7:E4:2E:04:FB:24:8F:EF:BD:2F:E0:52:BA:D3
信任这个认证? [否]: y
认证已添加至keystore中
创建客户端应用:
把下载的cas-client-java-2.1.1\dist\casclient.jar加入web应用的lib,修改web.xml

 


<web-app>
...
<filter>
<filter-name>CAS Filter</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://helloword.test.com:8443/cas/login</param-value>
</init-param>
<init-param>
  <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
  <param-value>https://helloword.test.com:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
  <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
  <param-value>客户端应用的域名和端口 (e.g., client.test.com:8080)</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
</web-app>

注意:配置中的红色的host一定要和生成keystore时填写的"您的名字与姓氏是什么?"一样。
按照上述步骤配置另外一台客户机http://another-client.test.com:8080
启动tomcat,访问http://client.test.com:8080将被重定向到https://helloword.test.com:8443/cas/login,登陆成功后将返回到http://client.test.com:8080。然后再访问http://another-client.test.com:8080将不需要登陆。
rails版客户端安装:
CASLogin plugin为rails应用提供cas认证功能。
D:\cas>rails railscas
D:\cas>cd railscas
D:\cas\railscas>ruby script/plugin install http://developer.csuchico.edu/svn/cas_login/trunk
配置插件:修改vendor\plugins\trunk\lib\cas_login.rb

# The URL of the CAS server to authenticate against.
CAS_SERVER_URL = 'cas.csuchico.edu'
# The port the CAS server is running on.
PORT = 443
改成
# The URL of the CAS server to authenticate against.
CAS_SERVER_URL = '
helloword.test.com'
# The port the CAS server is running on.
PORT = 8443

redirect_to "https://#{CAS_SERVER_URL}/cas/login?service=#{@service}"
改成
redirect_to "https://#{CAS_SERVER_URL}:8443/cas/login?service=#{@service}"
配置应用程序修改app\controllers\application_controller.rb如下:

 
class ApplicationController < ActionController::Base
  include CasLogin
  protected
  def is_logged_in
    return true unless session[:user].nil?
    if is_authenticated?
      if is_authorized?
        return true
      end
    end
    return false
  end  
  private
  def is_authorized?
    session[:user] = User.find_by_uid(get_authenticated_user_id)
    unless session[:user].nil?
      return true
    end
    flash[:notice] = "User not found"
    return false
  end
  end
 

修改需要认证的controller如下

 
class ServersController < ApplicationController
  before_filter :is_logged_in
end
 

3、test



 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics