- 浏览: 359207 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
fengxiatao:
忘了说我邮箱了 757723745@qq.com
关于 CAS SSO 文章声明 -
fengxiatao:
请发一下最github地址给我好吗?不胜感激
关于 CAS SSO 文章声明 -
romyli:
求一个github地址.感谢分享
关于 CAS SSO 文章声明 -
zz210891470:
使用您的例子从服务器获取lt返回test-login 页面之后 ...
CAS 之自定义登录页实践 -
feiteyizu:
WANTAWAY314 写道这种方法适合移动端的单点登录不?大 ...
CAS 之自定义登录页实践
最近因为公司另一款基于C/S的产品也需要整合到CAS 的 SSO,但是 CAS 本身对于客户端或浏览器而言是基于其COOKIE来存储用户(TGT)Ticket的,所以这时候就需要使用 CAS 的 RestFul API 来进行登录验证,并支持在C/S软件中点击用户头象时打开浏览器并跳转至用户中心,而且这时候在 WEB 上应该是已登录的状态(类似QQ点击自己的头象时,马上就进入到了QQ空间。)
关于CAS的登录验证流程,可以参考“CAS 之 实现用户注册后自动登录”,这里的RESTful登录验证流程与其大致相似,大体流程为:首先客户端提交用户名、密码、及Service三个参数,如果验证成功便返回用户的TGT(Ticket Granting Ticket)至客户端, 然后客户端再根据 TGT 获取用户的 ST(Service Ticket)来进行验证登录。 故名思意,TGT是用于生成一个新的Ticket(ST)的Ticket,而ST则是提供给客户端用于登录的Ticket,两者最大的区别在于,TGT是用户名密码验证成功之后所生成的Ticket,并且会保存在Server中及Cookie中,而ST则必须是是根据TGT来生成,主要用于登录,并且当登录成功之后 ST 则会失效。
CAS本身已经提供了 restlet 的集成包,如果你用的是 maven 的话直接加入,我这里的Cas-server的版本是 3.4.2.1:
然后再在 web.xml 中加入:
因为使用到了 Restlat 框架,所以还需要依赖几个 jar 包,分别是:
这几个jar已经打包在附件中了,另外 restlet.org 的 maven库中也有,需要的话可以去 maven.restlet.org 上找。
另外关于 restlet的配置在 cas-server中已经存在在: /WEB-INF/restlet-servlet.xml文件。
配置OK之后直接启动Server,下面来进行简单登录验证的测试:
1. 提交用户名密码及Service 进行登录验证
在以上Response信息及 Header中可以看到生成的 TGT,接下来是再重新根据 TGT 获取 ST,将请求的 URI 地址就是以上 Header中的 Location地址。
2. 根据返回的 TGT 来获取 ST
获取成功之后则返回了 ST,这时候对于客户端而言就已经拿到了登录的TIcket, 如果需要在Web中自动登录的话,只需要弹出浏览器,将ST作为 ticket参数传入即可。如,用户中心的后台地址首页是:http://www.google.com.hk/userCenter 则URL为: http://www.google.com.hk/userCenter?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 并可进行登录。 当然前提是在该Web应用中需要部署cas-client应用。
3. 注销用户
Java代码调用示例:
参考:https://wiki.jasig.org/display/CASUM/RESTful+API
好像ST是有时效的,必须在短时间使用,超时就这个错误了
请问有解决吗
请教下,我的验证成功了,拿到Ticket了,可是用http://XX.com?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 跳转过去后说票根无效,求解。
使用这种方式进行浏览器登录:
http://localhost:8090/console/?ticket=ST-21-qn0wsQN9VK0cQ1pfemW9-sso
我也觉得这里的方法是错误的,正如楼主在一开始自己说的,ST一旦验证过用户的身份是合法以后,ST就失效了,这里再带上ST去访问,肯定吃闭门羹啊。
关于CAS的登录验证流程,可以参考“CAS 之 实现用户注册后自动登录”,这里的RESTful登录验证流程与其大致相似,大体流程为:首先客户端提交用户名、密码、及Service三个参数,如果验证成功便返回用户的TGT(Ticket Granting Ticket)至客户端, 然后客户端再根据 TGT 获取用户的 ST(Service Ticket)来进行验证登录。 故名思意,TGT是用于生成一个新的Ticket(ST)的Ticket,而ST则是提供给客户端用于登录的Ticket,两者最大的区别在于,TGT是用户名密码验证成功之后所生成的Ticket,并且会保存在Server中及Cookie中,而ST则必须是是根据TGT来生成,主要用于登录,并且当登录成功之后 ST 则会失效。
CAS本身已经提供了 restlet 的集成包,如果你用的是 maven 的话直接加入,我这里的Cas-server的版本是 3.4.2.1:
<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-integration-restlet</artifactId> <version>3.4.2.1</version> <type>jar</type> </dependency>
然后再在 web.xml 中加入:
<servlet> <servlet-name>restlet</servlet-name> <servlet-class>com.noelios.restlet.ext.spring.RestletFrameworkServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restlet</servlet-name> <url-pattern>/v1/*</url-pattern> </servlet-mapping>
因为使用到了 Restlat 框架,所以还需要依赖几个 jar 包,分别是:
- com.noelios.restlet.ext.servlet.jar
- com.noelios.restlet.ext.spring-1.1.0.jar
- com.noelios.restlet.jar
- org.restlet-1.1.10.jar
- org.restlet.ext.spring-1.1.10.jar
这几个jar已经打包在附件中了,另外 restlet.org 的 maven库中也有,需要的话可以去 maven.restlet.org 上找。
另外关于 restlet的配置在 cas-server中已经存在在: /WEB-INF/restlet-servlet.xml文件。
配置OK之后直接启动Server,下面来进行简单登录验证的测试:
1. 提交用户名密码及Service 进行登录验证
DengerMacBook:cas-server denger$ curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/member/v1/tickets/ HTTP/1.1 201 Created Date: Wed, 23 Mar 2011 12:42:52 GMT Location: http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas Accept-Ranges: bytes Server: Noelios-Restlet-Engine/1.1.6 Content-Type: text/html;charset=ISO-8859-1 Content-Length: 437 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>201 The request has been fulfilled and resulted in a new resource being created</title></head><body><h1>TGT Created</h1><form action="http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas" method="POST">Service:<input type="text" name="service" value=""><br><input type="submit" value="Submit"></form></body></html>
在以上Response信息及 Header中可以看到生成的 TGT,接下来是再重新根据 TGT 获取 ST,将请求的 URI 地址就是以上 Header中的 Location地址。
2. 根据返回的 TGT 来获取 ST
DengerMacBook:cas-server denger$ curl -i -X POST -d "service=http://www.google.com" http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas HTTP/1.1 200 OK Date: Wed, 23 Mar 2011 12:48:03 GMT Accept-Ranges: bytes Server: Noelios-Restlet-Engine/1.1.6 Content-Type: text/plain;charset=ISO-8859-1 Content-Length: 29 ST-2-lJfQyJMMEnNGnKcglf1d-cas
获取成功之后则返回了 ST,这时候对于客户端而言就已经拿到了登录的TIcket, 如果需要在Web中自动登录的话,只需要弹出浏览器,将ST作为 ticket参数传入即可。如,用户中心的后台地址首页是:http://www.google.com.hk/userCenter 则URL为: http://www.google.com.hk/userCenter?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 并可进行登录。 当然前提是在该Web应用中需要部署cas-client应用。
3. 注销用户
DengerMacBook:cas-server denger$ curl -i -X DELETE http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas HTTP/1.1 200 OK Date: Wed, 23 Mar 2011 12:54:28 GMT Accept-Ranges: bytes Server: Noelios-Restlet-Engine/1.1.6 Content-Length: 0注销用户就很简单了,直接 SUBMIT DELETE 删除 TGT即可.
Java代码调用示例:
package cas; import java.io.IOException; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; public final class Client { private static final Logger LOG = Logger.getLogger(Client.class.getName()); private Client() { // static-only access } public static String getTicket(final String server, final String username, final String password, final String service) { notNull(server, "server must not be null"); notNull(username, "username must not be null"); notNull(password, "password must not be null"); notNull(service, "service must not be null"); return getServiceTicket(server, getTicketGrantingTicket(server, username, password), service); } private static String getServiceTicket(final String server, final String ticketGrantingTicket, final String service) { if (ticketGrantingTicket == null) return null; final HttpClient client = new HttpClient(); final PostMethod post = new PostMethod(server + "/" + ticketGrantingTicket); post.setRequestBody(new NameValuePair[] { new NameValuePair("service", service) }); try { client.executeMethod(post); final String response = post.getResponseBodyAsString(); switch (post.getStatusCode()) { case 200: return response; default: LOG.warning("Invalid response code (" + post.getStatusCode() + ") from CAS server!"); LOG.info("Response (1k): " + response.substring(0, Math.min(1024, response.length()))); break; } } catch (final IOException e) { LOG.warning(e.getMessage()); } finally { post.releaseConnection(); } return null; } private static String getTicketGrantingTicket(final String server, final String username, final String password) { final HttpClient client = new HttpClient(); final PostMethod post = new PostMethod(server); post.setRequestBody(new NameValuePair[] { new NameValuePair("username", username), new NameValuePair("password", password) }); try { client.executeMethod(post); final String response = post.getResponseBodyAsString(); switch (post.getStatusCode()) { case 201: { final Matcher matcher = Pattern.compile(".*action=\".*/(.*?)\".*") .matcher(response); if (matcher.matches()) return matcher.group(1); LOG .warning("Successful ticket granting request, but no ticket found!"); LOG.info("Response (1k): " + response.substring(0, Math.min(1024, response.length()))); break; } default: LOG.warning("Invalid response code (" + post.getStatusCode() + ") from CAS server!"); LOG.info("Response (1k): " + response.substring(0, Math.min(1024, response.length()))); break; } } catch (final IOException e) { LOG.warning(e.getMessage()); } finally { post.releaseConnection(); } return null; } private static void notNull(final Object object, final String message) { if (object == null) throw new IllegalArgumentException(message); } public static void main(final String[] args) { final String server = "http://192.168.41.107:8080/member/v1/tickets"; final String username = "admin"; final String password = "111111"; final String service = "http://localhost:8080/service"; LOG.info(getTicket(server, username, password, service)); } }
参考:https://wiki.jasig.org/display/CASUM/RESTful+API
- restlet.zip (457.7 KB)
- 下载次数: 1346
评论
21 楼
WANTAWAY314
2016-03-22
还有一个问题,ST是根据service生成的,需要把多个应用的service配置成一样的,才能实现一个ST在多个应用中登录? 但是service好像要跟各自应用的ip或者域名有关,生成的ST才可以登录
20 楼
WANTAWAY314
2016-03-22
你好。。。。。。如,用户中心的后台地址首页是:http://www.google.com.hk/userCenter 则URL为: http://www.google.com.hk/userCenter?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 并可进行登录。。。。我获取到了tickets,直接按照你上面说的不行,但是浏览器上service?tickets=ST,可以转到目标地址,,,但是转向后才是 目标url?tickets=ST.........请问下这个是为什么
19 楼
飘渺青衣
2016-01-04
rryqsh123 写道
final String service = "http://localhost:8080/service"; 这是做什么用的?
还有ST也拿到了 但是按照 http://localhost:18080/CAS_BS_Client?ticket=ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org 登录报错
错误信息:
org.jasig.cas.client.validation.TicketValidationException:
绁ㄦ牴'ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org'涓嶇鍚堢洰鏍囨湇鍔?
还有ST也拿到了 但是按照 http://localhost:18080/CAS_BS_Client?ticket=ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org 登录报错
错误信息:
org.jasig.cas.client.validation.TicketValidationException:
绁ㄦ牴'ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org'涓嶇鍚堢洰鏍囨湇鍔?
好像ST是有时效的,必须在短时间使用,超时就这个错误了
18 楼
lysunki
2015-08-08
郑州蘑菇云 写道
你这个文章我看了,也试验成功能够进行登录了,虽然能够登录,但是进入其他系统的话还是需要跳转到cas认证中心的登录界面进行登录?这是怎么回事?
请问有解决吗
17 楼
郑州蘑菇云
2015-05-08
你这个文章我看了,也试验成功能够进行登录了,虽然能够登录,但是进入其他系统的话还是需要跳转到cas认证中心的登录界面进行登录?这是怎么回事?
16 楼
rryqsh123
2015-03-27
final String service = "http://localhost:8080/service"; 这是做什么用的?
还有ST也拿到了 但是按照 http://localhost:18080/CAS_BS_Client?ticket=ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org 登录报错
错误信息:
org.jasig.cas.client.validation.TicketValidationException:
绁ㄦ牴'ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org'涓嶇鍚堢洰鏍囨湇鍔?
还有ST也拿到了 但是按照 http://localhost:18080/CAS_BS_Client?ticket=ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org 登录报错
错误信息:
org.jasig.cas.client.validation.TicketValidationException:
绁ㄦ牴'ST-26-iYVAEuSwtaICMcmgbgts-cas01.example.org'涓嶇鍚堢洰鏍囨湇鍔?
15 楼
rryqsh123
2015-03-24
为什么返回404啊
14 楼
chenhbc
2014-10-06
hae 写道
经过无数次的失败终于搞定了
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/文字cas-server/v1/tickets/ 这样写我相信大家会更明白点
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/文字cas-server/v1/tickets/ 这样写我相信大家会更明白点
请教下,我的验证成功了,拿到Ticket了,可是用http://XX.com?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 跳转过去后说票根无效,求解。
13 楼
renlei413326889
2014-09-18
感谢博主,您的一系列文章都很有价值~~
12 楼
dphenixiong
2014-08-07
带上ST后,无效,ST无法识别....
11 楼
冬天秋天
2014-07-10
magic_wz 写道
请问,我拿到里ST之后,怎么登录不了?
使用这种方式进行浏览器登录:
http://localhost:8090/console/?ticket=ST-21-qn0wsQN9VK0cQ1pfemW9-sso
10 楼
冬天秋天
2014-07-10
获取ST之后点击链接可以打开浏览器并进行登录,但是浏览器中也有退出登录的按钮,如何在浏览器中获取TGT,完成REST 方式的退出登录呢?
9 楼
magic_wz
2014-01-07
请问,我拿到里ST之后,怎么登录不了?
8 楼
glassesbamboo
2013-12-23
xiaokang1582830 写道
获取成功之后则返回了 ST,这时候对于客户端而言就已经拿到了登录的TIcket, 如果需要在Web中自动登录的话,只需要弹出浏览器,将ST作为 ticket参数传入即可。如,用户中心的后台地址首页是:http://www.google.com.hk/userCenter 则URL为: http://www.google.com.hk/userCenter?ticket=ST-3-9QkpLsFmCEqIXSVvGH9P-cas 并可进行登录?登录时总是提示票根无效
我也觉得这里的方法是错误的,正如楼主在一开始自己说的,ST一旦验证过用户的身份是合法以后,ST就失效了,这里再带上ST去访问,肯定吃闭门羹啊。
7 楼
chengtianfei
2013-12-05
service=http://www.google.com
这个service 可以随便写吗,我配置了一个service 他就只能访问这一个,其它的都包错误说票据无效,其它的系统都实现了cas 的客户端,有人回答一下原因吗?
这个service 可以随便写吗,我配置了一个service 他就只能访问这一个,其它的都包错误说票据无效,其它的系统都实现了cas 的客户端,有人回答一下原因吗?
6 楼
hae
2013-08-14
hae 写道
经过无数次的失败终于搞定了
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/cas-server/v1/tickets/ 这样写我相信大家会更明白点
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/cas-server/v1/tickets/ 这样写我相信大家会更明白点
5 楼
hae
2013-08-14
经过无数次的失败终于搞定了
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/文字cas-server/v1/tickets/ 这样写我相信大家会更明白点
curl -i -X POST -d "username=admin&password=123456&service=http://www.google.com" http://192.168.41.107:8080/cas-server/v1/tickets/
楼主的这个命令也不说明下 害我搞了半天
大家要注意的是:
1: "username=admin&password=123456&service=http://www.google.com" 这个service大家随便写
2: http://192.168.41.107:8080/member/v1/tickets/ 这个memeber容易让人误解 member其实是你的CAS服务器,如
http://192.168.41.107:8080/文字cas-server/v1/tickets/ 这样写我相信大家会更明白点
4 楼
bmwcyq520
2013-08-08
为什么我的返回结果集里面没有这一行呢?
Location: http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas
Location: http://192.168.41.107:8080/member/v1/tickets/TGT-14-gDOn9hhSYmq3xfeTRNhTAjZgOMdCdyuVNfsuLRs6onNv7fVmmX-cas
3 楼
bmwcyq520
2013-08-07
我怎么返回的是404,是不是需要在restlet-servlet.xml配置什么啊?
2 楼
fogu
2013-03-07
我访问v1/tickets的时候,返回的是200码,debug的时候发现代码去跳转访问/cas/login接口了,访问完了以后就传回200了,而不是希望的201 create,不知道是什么原因,我用户名和密码也已经传递过去了
发表评论
-
关于 CAS SSO 文章声明
2015-03-21 14:39 3120由于几年前写了几篇 CAS 系列的文章,之后陆续有人参照文章去 ... -
CAS 之 跨域 Ajax 登录实践
2011-07-08 01:36 27538因最近经常有时候被一些朋友问到关于 CAS 跨全域下的 Aja ... -
新浪微博如何实现 SSO 的分析
2011-05-10 14:44 24739最近在使用sina微博时,经常性交替使用 weibo ... -
淘宝如何跨域获取Cookie分析
2011-04-13 10:39 20446Move to: http://www.iteye.com/t ... -
CAS 之自定义登录页实践
2010-11-11 20:03 829191. 动机 用过 CAS 的人都知道 CAS-S ... -
CAS 之 实现用户注册后自动登录
2010-11-08 16:22 186021. 关于CAS的介绍不再累述,我想涉及过SSO同学 ...
相关推荐
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 拷贝...
REST(Representational State Transfer)API是H3C CAS系统提供的一种接口方式,用于允许外部应用程序与CAS系统进行交互,实现系统的集成和二次开发。通过REST API,开发者可以远程操作和管理H3C CAS中的各种资源,...
在5.2.x版本中,CAS引入了RESTful API,这使得系统配置和管理更加灵活,可以通过HTTP请求直接操作。 对于MySQL数据库的配置,CAS通常会使用JDBC驱动来建立连接。在`cas.properties`或`application.yml`配置文件中,...
CAS 5.3版本引入了更多的改进和增强,包括支持RESTful API,使得与CAS交互更加灵活。 Shiro是Apache提供的一款轻量级的安全框架,用于实现身份认证、授权和会话管理。在Spring Boot应用中,Shiro可以轻松地集成并...
Restlet提供了客户端和服务器端的组件,可以方便地与Cas集成,实现基于REST的身份验证。 在Cas 3.4集成Restlet的过程中,你需要以下jar文件: 1. `cas-server-support-restlet`: 这是Cas提供的Restlet支持模块,...
集成 RESTle 则是为了将 CAS 的功能扩展到RESTful API接口,使得非Web应用也能受益于CAS的安全认证。 RESTle(Representational State Transfer for Lightweight Entities)是专门为CAS设计的一个扩展,它允许通过...
综上所述,`cas-server-4.0.0-release` 和 `cas-client-3.2.1-release` 文件包含了构建和维护一个基于CAS的单点登录系统所需的关键组件和源码,对于理解SSO机制、开发和优化CAS集成具有很高的价值。通过深入研究这些...
本项目是关于前后端分离集成CAS(Central Authentication Service)的一个实例,主要使用了Spring Boot、Shiro、Oracle数据库以及Vue.js等技术。 首先,Spring Boot是基于Spring框架的轻量级开发工具,它简化了新...
CAS(Central Authentication Service)是基于Java的开源身份验证框架,用于实现单一登录(Single Sign-On,简称SSO)。SSO允许用户通过一次登录,就可以访问多个应用系统,无需重复输入用户名和密码。这对于大型...
9. **API与集成**:了解H3C CAS提供的RESTful API和SDK,以及如何与其他系统集成,实现自动化运维流程。 10. **开局配置实战**:通过H3C CAS开局配置指导书,一步步操作设置CAS环境,包括硬件准备、软件安装、网络...
6. **RESTful API**:随着微服务架构的流行,CAS 5.3可能会提供RESTful API接口,方便与其他服务进行交互和集成。 7. **安全性增强**:版本5.3可能会包含安全更新,例如加强HTTPS支持,防止中间人攻击,并且提供更...
7. **API与Web服务**:CAS 提供了 RESTful API 和 SOAP 接口,便于与其他系统集成。源码中可以研究这些接口的设计和实现。 通过对 CAS-5.2.0 的源码学习,开发者不仅可以深入理解 SSO 的工作原理,还能掌握如何定制...
10. **API和Web服务**:CAS提供了RESTful API和SOAP Web服务接口,使得系统可以通过程序化方式与CAS交互。 在解压后的“cas-3.5.3”文件夹中,你可能会找到以下组件: - `cas-server-webapp`: CAS服务器的Web应用...
**三、CAS集成步骤** 1. **环境准备**:确保Java环境(JDK)和构建工具(如Maven)已安装。 2. **下载CAS服务器**:从官方网站获取CAS 4.1.x源码或预编译的服务器包。 3. **配置服务器**:修改`cas.properties`配置...
7. **API与集成**:开发者可以利用CAS的RESTful API或Java API与CAS服务器进行交互,也可以集成到其他开发工具或持续集成/持续部署(CI/CD)流程中。 8. **自定义认证**:CAS支持自定义认证策略,例如通过LDAP、...
为了更好地支持移动设备,可以为CAS Server增加RESTful API,以便于移动应用集成。 1. **添加Spring Web依赖**:如果CAS Server尚未支持RESTful服务,需要添加Spring Web相关的依赖。 2. **修改`webx.xml`**:配置...
2. **RESTful API**:增加了RESTful接口,使得与其他系统集成更加便捷。 3. **多语言支持**:支持多种语言的用户界面,增强了国际化体验。 4. **自定义认证流程**:提供了更灵活的认证策略,允许开发人员创建...
4. API 认证:为 RESTful API 提供认证支持。 六、CAS 安全考虑 虽然 CAS 提供了便利的身份验证,但也需要注意安全问题,如防止 Session Fixation 攻击、保护 Service Ticket 不被截获、定期清理无效票证等。...
3. **RESTful API**:随着Web服务的发展,CAS 6.0.0-RC3提供了RESTful API接口,允许管理员和开发者以更灵活的方式与CAS服务器交互,进行身份验证、票证管理等操作。 4. **多因素认证(MFA)支持**:CAS支持多种多...