CAS认证接口说明之客户端集成(一)

使用CAS登录页面(CAS接口)

页面跳转登录方式为推荐方式,同等条件下建议使用该方式进行集成。用户在多个应用系统中,只需要登录一次就可以访问所有相互信任的应用系统,可为用户登录提供单点登录的使用效果。

登录场景

页面跳转集成兼容 CAS 2.0、CAS 3.0 协议标准,流程包含三种场景下的登录流程:首次登录、登录后第二次访问同一个第三方应用、登录后首次访问第二个第三方应用。
首次登录流程为:

  1. 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断),判断用户未登录后,将用户重定向到认证服务器;
  2. 认证服务器验证用户登录状态,判断用户未登录后,向用户展示登录页面;
  3. 用户完成登录操作;
  4. 认证服务器设置用户浏览器 cookie 的 CASTGC 内容,并重定向用户到第三方应用;
  5. 第三方应用从用户请求中获取 ticket,并使用 ticket 调用认证服务器验证接口, 获取用户信息;
  6. 第三方应用使用获取到的信息(如人员编号、姓名)完成系统内登录逻辑(如设置 session)。
    登录后第二次访问同一个第三方应用流程为:
  7. 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断);
  8. 第三方应用判断用户已登录,向用户展示内容页面。
    登录后首次访问第二个第三方应用流程为:
  9. 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断),判断用户未登录后,将用户重定向到认证服务器;
  10. 认证服务器通过 CASTGC 验证用户登录状态,判断内容有效后,重定向用户到第三方应用;
  11. 第三方应用从用户请求中获取 ticket,并使用 ticket 调用票据验证接口, 获取用户信息;
  12. 第三方应用使用获取到的信息(如人员编号、姓名)完成系统内登录逻辑(如设置 session)。

登录接口

地址 http://cas.xxx.com/login
调用方式 GET
参数 service 必填 第三方应用接口地址,用户在 /login 接口完成登录后,系统会将其重定向到的该地址,此接口由第三方应用提供,要在服务管理的白名单内,接口需要完成的操作:

  1. 从请求中获取 ticket 参数;
  2. 使用ticket 调用票据验证接口 /serviceValidate 获取用户信息( ticket 一次生效);
  3. 完成用户登录(如写 session )。
    调用场景 第三方应用在判断用户未登录后,将用户重定向到该地址。
    示例 https://cas.xxx.com/login?service=http://jjgl.xxx.com 用户完成登录后,将重定向到:http://jjgl.xxx.com?ticket=ST-123456

登出接口

地址 http://cas.xxx.com/logout
调用方式 GET
参数 service 必填 同1.1.2登录接口/login 的 service 参数
调用场景 用户在第三方应用点击注销/登出按钮后,第三方应用:

  1. 调用后台接口,使用户 session 失效;
  2. 重定向用户到该地址,使统一认证登录状态失效。
    示例 http://cas.xxx.com/logout?service=http://jjgl.xxx.com 用户完成登出后,将跳转至登录页面

票据验证接口

1. 调用方式 GET
协议URL
CAS 2.0 协议接口http://cas.xxx.com/serviceValidate
CAS 3.0 协议接口http://cas.xxx.com/p3/serviceValidate
2. 参数说明:
参数是否为空说明
service必填同登录接口/login 的 service 参数
ticket必填第三方应用获取到的 ticket ,如 ST-123456
3. 返回值示例

示例 https://cas.xxx.com/serviceValidate?service=http://jjgl.xxx.com&ticket=ST-123456 验证成功后,将返回:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess>
        <cas:user>admin</cas:user>
        <cas:attributes>
            <cas:userNO>admin</cas: userNO>
            <cas:realName>管理员</cas:realName>
            <cas:accountID>admin</cas:accountID></cas:attributes>
    </cas:authenticationSuccess>
</cas:serviceResponse>

验证失败后,将返回:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' >
	<cas:authenticationFailure code="INVALID_TICKET" >
		Ticket ST-123456 not recognized
	</cas:authenticationFailure>
</cas:serviceResponse>
4. 错误码说明:

返回值 XML 格式编码的调用结果,如果 ticket 验证通过,将返回用户信息,否则返回错误信息,错误码包含:

错误码错误信息
INVALID_REQUEST请求参数错误
INVALID_TICKETticket 验证失败
INVALID_SERVICEticket 验证成功,但是 service 不在白名单中
INTERNAL_ERROR认证服务内部错误
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
server 地址: http://www.jasig.org/cas/download client 地址: http://www.ja-sig.org/downloads/cas-clients/ 当前最新版本 cas-server-3.4.2 , cas-client-3.1.10 2. 安装 server l 解压 cas-server-3.4.2 ,将 cas-server-3.4.2\modules\cas-server-webapp-3.4.2.war 拷贝到 tomcat 的 webapps 下。 3. 配置 server 3.1. 添加 cas server 依赖的 jar n cas-server-3.4.2\modules\cas-server-support-jdbc-3.4.2.jar 、 cas-server-integration-restlet-3.4.2.jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 数据库驱动 jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 到 apache 网站下载下面三个 cas server 依赖 jar 包拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下 Ø http://apache.freelamp.com/commons/collections/binaries/commons-collections-3.2.1-bin.zip Ø http://apache.etoak.com/commons/dbcp/binaries/commons-dbcp-1.4-bin.zip Ø http://apache.etoak.com/commons/pool/binaries/commons-pool-1.5.4-bin.zip n 下载 restlet 相关 http://www.restlet.org/downloads/ , 解压后将下面 jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib: ( 它奶奶地这一步骤很折腾 ) com.noelios.restlet.ext.servlet_2.5.jar com.noelios.restlet.ext.spring_2.5.jar com.noelios.restlet.jar org.restlet.ext.spring_2.5.jar org.restlet.jar n 下载 CGlib http://sourceforge.net/projects/cglib/files/ 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 。 n 下载 ASM/OW2 http://forge.ow2.org/projects/asm/ 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 。 3.2. 添加数据源
CAS(Central Authentication Service)是一种单点登录协议,用于实现在多个应用系统中进行统一的身份认证和授权。CAS客户端是指集成CAS协议的应用系统,用于与CAS服务器进行通信并实现单点登录功能。 以下是CAS客户端集成单点登录的代码示例: ```java // 引入CAS客户端依赖 <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.6.0</version> </dependency> // 配置CAS客户端 <bean id="casClient" class="org.jasig.cas.client.authentication.CasClientAuthenticationFilter"> <property name="casServerLoginUrl" value="http://localhost:8081/cas/login" /> <property name="serverName" value="http://localhost:8080" /> </bean> // 配置CAS过滤器 <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>http://localhost:8081/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> // 配置CAS单点登出过滤器 <filter> <filter-name>CAS Logout Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Logout Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> // 配置CAS请求单点登出过滤器 <filter> <filter-name>CAS Request Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Request Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 以上代码是一个Java Web应用中集成CAS客户端的示例,通过配置CAS客户端和相关过滤器,实现与CAS服务器的通信和单点登录功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值