2019独角兽企业重金招聘Python工程师标准>>>

b/s类型的项目我们可以使用前文的方法很容易就做了集成,如果是c/s类型的应用呢?还有些比较特殊b/s类型的项目,既希望能够集成sso,又希望能保留自己的登录画面和本地用户,这里就需要用到官方提供的REST协议。

这一段尝试过程很顺利,官方的文档虽然简单到不行不过没啥大毛病,笔者尝试用C#实现了一下一次通过,小伙伴们可以很轻松的参照C#代码码出其他语言的代码,因为只是做几次简单的http请求。

private void btnClick_Click(object sender, EventArgs e){//获取TGTstring tid = HtmlPost("https://sso.xxx.com/cas/v1/tickets", "username=zhangsan&password=1", "POST");//返回的格式是html,需要解析抽取TGTRegex regex = new Regex("(?<=tickets/).+?(?=\")", RegexOptions.Singleline);tid = regex.Match(tid).Value;//获取服务(客户端惟一url,可以捏造但必须惟一)凭据,有效期1.8秒string data = "service=" + HttpUtility.UrlEncode("https://www.xxx.com");string ticket = HtmlPost("https://sso.xxx.com/cas/v1/tickets/" + tid, data, "POST");//凭借客户端惟一url和它的凭据获取用户凭据string content = HtmlGet("https://sso.xxx.com/cas/p3/serviceValidate?service=https://www.xxx.com&ticket=" + ticket);//返回的content是xml格式的,需要自行解析//注销凭据string result = HtmlPost("https://sso.xxx.com/cas/v1/tickets/" + tid, "", "DELETE");}string HtmlPost(string url, string data, string method){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);req.ContentType = "application/x-www-form-urlencoded";req.Method = method;byte[] form = Encoding.Default.GetBytes(data);req.ContentLength = form.Length;req.GetRequestStream().Write(form, 0, form.Length);req.GetRequestStream().Close();HttpWebResponse rep = (HttpWebResponse)req.GetResponse();StreamReader sr = new StreamReader(rep.GetResponseStream());string str = sr.ReadToEnd();sr.Close();rep.GetResponseStream().Close();return str;}string HtmlGet(string url){WebClient wc = new WebClient();wc.Encoding = Encoding.UTF8;return wc.DownloadString(url);}

转载于:https://my.oschina.net/viperwhip/blog/1534908

单点登录之实战CAS5.1.x(六)——REST协议相关推荐

  1. 阿里淘宝天猫单点登录项目实战(附源码)

    文章目录 一.简介 二.单点登录常见方案 三.技术架构与实战 四.github地址 一.简介 背景 在企业发展初期,企业使用的系统很少,通常有一个或者两个,每个系统都有自己的登录模块,运营人员每天用自 ...

  2. SSO单点登录-分布式系统实战

    什么是单点登录SSO(Single Sign-On) SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的 ...

  3. 共同父域下的单点登录

    共同父域下的单点登录 标签: SSO 2014-03-04 22:38 12686人阅读 评论(17) 收藏 举报 分类: Java Web(12) 作者同类文章X 版权声明:本博客所有的原创文章,作 ...

  4. SSO(单点登录)介绍

    标签:sso iplas ##一.SSO(单点登录)介绍 SSO英文全称Single SignOn,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将 ...

  5. CAS单点登录(八)——多属性返回

    在前面我们讲解了在CAS中关于如何自定义验证码以及自定义错误信息的配置,对于CAS的自定义有了更进一步的了解,如果忘记了,可以去复习一下CAS单点登录(七)--自定义验证码以及自定义错误信息. 今天我 ...

  6. 将一个域下的cookie传到另一个域_单点登录那些事儿(二)同域下的单点登录

    单点登录(SSO,Single Sign On)对我们来说已经不陌生了,一次登录,处处登录.企业旗下都是自己的应用系统,所有的应用系统都使用同一个一级域名,通过不同的二级域名来区分应用系统.例如:百度 ...

  7. 4a安全管控 java cas_单点登录与权限管理本质:单点登录介绍

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前两篇介绍了session与cookie 和 HTTP重定向 ,有了他们,浏览器就可以在多个系统间自动交互,实现自动登录. 本篇介 ...

  8. 基于SAML协议 实现SP 单点登录

    基于SAML协议及SpringSecurity 实现单点登录 SAML SP端 一. 什么是SAML协议 首先还是简单介绍一下什么是SAML协议: SAML 即安全断言标记语言,英文全称是 Secur ...

  9. 使用Spring Security OAuth2实现单点登录(SSO)系统

    一.单点登录SSO介绍   目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...

最新文章

  1. Linux内核分析 - 网络[四]:路由表
  2. 学习笔记Spark(二)—— Spark集群的安装配置
  3. 怎么写自己的CMakeLists.txt--二
  4. MAC下代理工具Charles使用
  5. SDNU 1464.最大最小公倍数(思维)
  6. C#中 类和结构 值类型和引用类型以及 值传递和引用传递
  7. 【Spring】Spring boot 中文乱码
  8. Microsoft SQL Server 2000 索引碎片整理最佳实践(上)
  9. Flask:an ImportError was raised问题解决
  10. 如何正确卸载天锐绿盾客户端
  11. rs485接收中断函数使能_RS485通讯几种常见问题
  12. 动态库和静态库的区别
  13. 离散数学-2 命题逻辑等值演算
  14. python爬取琳琅社区整站视频
  15. 带你走进神经网络的“前世今生”
  16. android generated java files,Android protobuf-javalite 实践
  17. 微信公众平台学习笔记
  18. 创建自己的搜索引擎,利用google进行站内搜索
  19. Flask 学习-22.可插拨视图MethodView类
  20. 渗透测试工程师面试题大全(三)

热门文章

  1. 项目管理13禁忌[转]
  2. Silverlight三维透视+倒影效果
  3. SCI论文写作中常见的语言问题汇总
  4. MATLAB R2021a v9.10 for win 最新无限制中英文完美版 数据处理软件
  5. 图像处理--线line 提取
  6. SCI论文写作--中科院自动化所牛博士教你如何搞科研
  7. Java 获取当前时间
  8. C++实现软件自动更新功能
  9. _cdecl、_stdcall 、_fastcall、_thiscall 函数调用方式与区别
  10. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式