1、密级:一般秘密机密绝密 CAS6.0认证服务器接口使用手册 (C)-北京信城通数码科技版权全部 版本历史 版本号 生效日期 版本说明/变更理由/变更内容 作者 备注 V1.0 -5-17 建立 霍云 V2.0 -5-30 修改 霍云 V3.0 -9-23 修改整合 霍云 变更说明:C:Create,初始创建;A:Add,增加内容;M:Mod,修改;D:Del,删除 目录 1 序言 5 1.1 企业介绍 5 2
2、 J2EE接口 5 2.1 接口介绍 5 2.2 接口安装 6 2.2.1 Casproxy.jar 6 2.2.2 加载服务器组件到应用系统中 6 2.2.2.1 Web.xml 6 2.2.2.2 拷贝配置文件 7 2.2.2.3 拷贝运行文件 8 2.2.2.4 cas.properties 8 2.2.2.5 caslog.xml 9 2.3 接口说明 11 2.3.1 函数说明 11 2.3.1.1 类 AuthBroker 11 2.3.1.2 接口 AuthBrokerIF 12 2.3.2 使用示例 15 3 C接口 19 3.1 接口介绍 19
3、 3.2 安装说明 19 3.2.1 解压缩 19 3.2.2 config说明 21 3.2.2.1 casserver.config 21 3.2.2.2 casclient.config 22 3.2.3 配置环境 22 3.3 C接口说明 23 3.3.1 创建代理 23 3.3.2 注销代理 23 3.3.3 证书用户登录 23 3.3.4 证书用户登出 24 3.3.5 口令用户登录 24 3.3.6 口令用户登出 24 3.3.7 用户令牌校验 24 3.3.8 用户令牌校验并取用户属性(接口1) 25 3.3.9 用户令牌校验并取用户属性(接口2
4、 25 3.3.10 用户令牌比较 26 3.4 调用说明 26 3.5 返回值代码 27 4 CAS for CIQ接口(C接口和PowerBuilder接口) 27 4.1 接口介绍 27 4.2 接口安装 27 4.2.1 解压缩 27 4.2.2 config说明 28 4.2.3 配置环境 30 4.2.4 安装成功测试 30 4.3 接口说明 32 4.3.1 函数说明 32 4.3.1.1 C接口说明 32 4.3.1.2 PowerBuilder调用说明 33 4.3.2 返回码定义 34 5 技术支持及售后服务 35 1 序言 1.1
5、 企业介绍 北京信城通数码科技(以下简称信城通)是8月在北京中关村科技园区丰台园注册成立高新技术企业,是经信息产业部同意跨地域增值电信业务服务商。 信城通业务关键包含电子数据交换服务、在线数据处理服务、在线交易处理服务、网络信息技术服务、信息安全服务、产品及应用软件研发等领域。企业80%以上职员拥有本科及以上学历,同时拥有多位业内顶级技术教授和资深业务骨干。凭借良好人才优势、强大技术实力和专业服务队伍,为各级检验检疫机构及广大进出口企业用户提供优质产品和服务,并成为联接二者优异桥梁。 经信息产业部电信管理部门审核同意,企业取得了《中国电信和信息服务经营许可证》(京ICP 证010524)
6、9月20日取得《中关村科技园丰台园高新技术企业证书》(证书号:0121618F)。8月18日,信城通经过ISO9001:标准质量管理体系认证,并已经正式开启CMMI认证进程。 北京信城通数码科技现有职员150多人,全部为大专以上学历,其中硕士占7%,本科占70%,大专占23%。高级管理人员14%,技术人员62%,通常管理人员24%。 11月28日,信城通正式入住在中关村科技园区丰台园总部基地新办公楼,它是信城通自成立以来快速发展标志,也是信城通以后长久稳定发展坚实基础。 信城通将一直秉承以用户为中心、以市场为导向、以服务为基础、以技术为后盾、以创新求发展、以诚信立长久企业宗旨,脚扎实
7、地,开拓进取,连续不停地为广大用户提供优质产品和服务。 2 J2EE接口 2.1 接口介绍 本手册介绍了CAS6.0认证服务器门户接口函数。这部分接口函数实现了两类功效:用户标识校验和取证书相关信息。本接口关键用于应用程序和CAS整合,经过调用本接口,应用程序使用CAS提供认证服务。本接口适适用于Java形式应用程序。 2.2 接口安装 2.2.1 Casproxy.jar 本接口现在封装在casproxy.jar中。应用程序使用时,取得casproxy.jar文件,放入对应目录中,并在应用程序工程中加入对应路径。 2.2.2 加载服务器组件到应用系统中 2.2.2
8、1 Web.xml
确定有效web.xml,本文件位置在应用WEB-INF目录下。
(1)假如Servlet版本为2.3,则需要增加:
9、 10、name>configFile
11、load-on-startup>
到适宜位置,
(2)假如Servlet版本为2.2,则需要增加:
12、anagerServlet
13、
14、配置文件 在WEB-INF目录下建立新目录casconf,把配置文件(cas.properties和caslog.xml)拷贝到casconf下,完成后结构以下: 图2.2-1 casconf 2.2.2.3 拷贝运行文件 把对应jar文件:(commons-codec-1.3.jar、commons-collections.jar、commons-pool-1.2.jar、log4j-1.2.13.jar、ice.jar)拷贝到WEB-INF/lib目录下,这些Java库文件文件能够从产品光盘上取得或从网上下载,完成后目录内容以下: 图2.2-2 lib 2.2.2
15、4 cas.properties 它包含以下内容,以#开头表示是注释, 名称 值 说明 Ice.Warn.Connections 0 显示连接警告信息,缺省为0 Ice.ACM.Client 0 用户端活动Socket连接空闲存活时间,超出此时间,连接将被关闭。缺省为0,表示严禁此功效。 Ice.Trace.Network 0-不跟踪 1-跟踪连接建立和关闭 2-类似1,但更具体部分 3-类似2,但跟踪数据 网络跟踪选项 Ice.ThreadPerConnection 1 每个连接关联线程数,在TCP连接条件下,一个socket连接能够有多个线程,但
16、在SSL环境下只能设置为1(JSSE限制), Ice.Plugin.IceSSL IceSSL.PluginFactory 在使用SSL连接条件下,必需包含此插件。 IceSSL.Trace.Security 0-不跟踪,缺省值 1-跟踪少许信息 2-比较具体 SSL连接跟踪信息。 IceSSL.Client.Ciphers NONE (RSA) !(EXPORT) !(NULL) SSL协商时,支持密码算法。 IceSSL.Client.Keystore F:/reports/certs/client.jks 证书和私钥库,javaKeyStore格式。 Ice
17、SSL.Client.KeystorePassword changeit 密钥库密码, IceSSL.Client.Certs F:/reports/certs/cacerts.jks 可信任证书库 IceSSL.Client.CertsPassword password 证书库密码 Cas.ConnectionPool.max.active 10 连接到CAS最大Socket连接数,缺省是20个。 Cas.ConnectionPool.wait.time 5 从Socket连接池中取得一个连接等候最长时间,超出这个时间,将返回错误。 Cas.Applicatio
18、n.Login.Identity sso-portal 应用系统在CAS服务器中注册应用系统标识。 Cas.Application.Login.Password sso-password 应用系统在CAS服务器中注册应用系统标识对应口令。 Cas.CasServer.Endpoints tcp -h 10.98.157.34 -p 10000 CAS服务器地址和端口号,仅支持IPV4,tcp表示是TCP协议,ssl表示是SSL协议,-h指定CAS服务器地址,-p指定CAS服务器端口号。 表2.1-1 cas.properties 2.2.2.5 caslog.xml 日
19、志支持5个等级,等级越高,统计信息越具体。
等级
值
说明
1
fatal
严重等级,
2
error
错误
3
warn
警告(生产环境下设置等级)
4
info
信息(调试状态)
5
debug
调试(调试状态)
表2.1-2 caslog.xml
配置文件为xml格式,缺省条件下,日志输出到系统标准输出中,要修改只是日志等级,见红色部分。
2.2.2.5.1 缺省配置
21、 22、 class="org.apache.log4j.PatternLayout">
23、
25、户登录令牌,假如没有发觉令牌,则重定向到门户进行登录, 登录成功后,再重新返回到本接口。 static AuthBrokerIF tokenCheck(HttpServletRequest request, HttpServletResponse response) 验证现在已经登录用户令牌是否继续有效,当用户重新登录后,前次登录令牌将失效。 表3.1-1 2.3.1.1.1 loginCheck public static final AuthBrokerIF loginCheck(HttpServletRequest request,
26、 HttpServletResponse response) throws java.lang.Exception 验证用户登录令牌,假如没有发觉令牌,则重定向到门户进行登录, 登录成功后,再重新返回到本接口。 参数: request - http请求对象 response - http响应对象 返回: -假如验证成功,返回AuthBrokerIF实例,能够取对应属性。 -假如为null,表示需要进行重定向,调用者只需返回即可
27、 -Exception,表示验证错误,不需要继续处理。 抛出: java.lang.Exception 2.3.1.1.2 tokenCheck public static final AuthBrokerIF tokenCheck(HttpServletRequest request, HttpServletResponse response) throws java.lang.Exception 验证现在
28、已经登录用户令牌是否继续有效,当用户重新登录后,前次登录令牌将失效。 参数: request - http请求对象 response - http响应对象 返回: -假如验证成功,返回AuthBrokerIF实例,能够取对应属性。 -Exception,表示验证错误,说明本令牌已经失效,或没有找到令牌,能够进行错误处理。 抛出: java.lang.Exception 2.3.1.2 接口 AuthBrokerIF 全部已知实现类: AuthBroker public interface AuthBrokerIF 方法摘要 java.lang
29、String getC() get subject's country java.lang.String getCN() get subject's commonName java.lang.String getDN() get subject's DN java.lang.String getEntityID() get subject's entityID java.lang.String getL() get subject's locali
30、ty java.lang.String getO() get subject's orgnization java.util.Vector getOs() get subject's orgnizations java.lang.String getOU() get subject's orgnizationUnit java.util.Vector getOUs() get subject's orgnizationUnits java.lang.String get
31、SN() get certificate's serialNumber java.lang.String getSN0() 已过时。 java.lang.String getST() get subject's stateOrProvince 表3.1-2 2.3.1.2.1 getC java.lang.String getC() get subject's country 返回: country code 2.3.1.2.2 getST java.lang.String getS
32、T() get subject's stateOrProvince 返回: stateOrProvince 2.3.1.2.3 getL java.lang.String getL() get subject's locality 返回: city 2.3.1.2.4 getO java.lang.String getO() get subject's orgnization 返回: orgnization 2.3.1.2.5 getOs java.util.Vector getOs() get subject's orgnizations
33、 返回: all orgnizations 2.3.1.2.6 getOU java.lang.String getOU() get subject's orgnizationUnit 返回: orgnizationUnit 2.3.1.2.7 getOUs java.util.Vector getOUs() get subject's orgnizationUnits 返回: all orgnizationUnits 2.3.1.2.8 getCN java.lang.String getCN() get subject's commonName
34、 返回: common name 2.3.1.2.9 getDN java.lang.String getDN() get subject's DN 返回: distinguish name 2.3.1.2.10 getSN0 java.lang.String getSN0() 已过时。 Warning, deprecated, please use getEntiryID 返回: entity id 2.3.1.2.11 getSN java.lang.String getSN() get certificate's serialNumber
35、 返回: cert serial number 2.3.1.2.12 getEntityID java.lang.String getEntityID() get subject's entityID 返回: entity id 2.3.2 使用示例 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.serv
36、let.http.HttpServletResponse; /** * Servlet implementation class for Servlet: RedirectTestServlet * * @web.servlet name="RedirectTestServlet" display-name="RedirectTestServlet" * * @web.servlet-mapping url-pattern="/RedirectTestServlet" * */ public class RedirectTestServlet extend
37、s javax.servlet.http.HttpServlet implements javax.servlet.Servlet { /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#HttpServlet() */ public RedirectTestServlet() { super(); } /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#doGet(HttpServ
38、letRequest request, * HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { AuthBrokerIF abi = AuthBroker.loginCheck(request, response); if (abi == null) return;
39、 response.setContentType("text/html; charset=GBK"); PrintWriter out = null; try { out = response.getWriter(); out.println("
40、info
out.append("
| 用户实体标识1-EID | " + abi.getEntityID() + " |
| 用户实体标识2-SN0 | " + abi.getSN0() + " |
| 用户序列号SN | " + abi.getSN() + " |
41、DN | " + abi.getDN() + " |
| 国家信息C值 | " + abi.getC() + " |
| 通用名称CN值 | " + abi.getCN() + " |
| 用户地域L值 | " + abi.getL() + " |
| 用户组织O值 | " 42、 abi.getO() + " |
| 用户组织OU值 | " + abi.getOU() + " |
| 用户ST值 | " + abi.getST() + " |
43、kTrace(); } } /* * (non-Java-doc) * * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, * HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44、 try { AuthBrokerIF abi = AuthBroker.tokenCheck(request, response); response.setContentType("text/html; charset=GBK"); PrintWriter out = null; try { out = response.getWriter(); out.println("
45、Exception e) {
e.printStackTrace();
return;
}
// verify info
out.append("
| 用户实体标识1-EID | " + abi.getEntityID() + " |
| 用户实体标识2-SN0 | " + abi.getSN0() + " |
| " + abi.getSN() + " | |
| DN | " + abi.getDN() + " |
| 国家信息C值 | " + abi.getC() + " |
| 通用名称CN值 | " + abi.getCN() + " |
| 用户地域L值 | |
| 用户组织O值 | " + abi.getO() + " |
| 用户组织OU值 | " + abi.getOU() + " |
| 用户ST值 | " + abi.getST() + " |
48、body>"); out.close(); } catch (Exception e) { e.printStackTrace(); } } } 3 C接口 3.1 接口介绍 本手册介绍了CAS6.0认证服务器门户接口函数。这部分接口函数实现了两类功效:用户标识校验和取证书相关信息。本接口关键用于应用程序和CAS整合,经过调用本接口,应用程序使用CAS提供认证服务。本接口适适用于C语言应用程序。 3.2 安装说明 3.2.1 解压缩 Linux下安装时,先取得接口Linux版压缩包aspicas.tar.gz,然后用tar命令把a
49、spicas.tar.gz解压缩到一个路径中。压缩包展开后内容以下: 其中: 目录 说明 casservertest 本目录中包含一个简单cas测试服务器,casservertest。 其中casserver.config为测试服务器配置文件,各项解释见2.2节 如目前路径在casservertest目录,服务器运行使用命令: ./casservertest –Ice.Config=casserver.config config 用户端配置文件,casclient.config,各项解释见2.2节 include CAS aspi C接口头文件,aspicas6.h lib CAS aspi C接口本身库文件为libaspicas_c.so.6.1.0 其它全部是接口依靠库文件 对于Windows版接口安装,请先取得Windows版接口压缩包aspicas.zip,然后把压缩包解压得如Linux版类似目录结构和内容: 其中lib目录下aspicas6c.dll是接口动态库,其它是接口依靠库文件 3.2.2 config说明 3.2.2.1 casserver.config 它内容以下: ―――――――――――――――――――






