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. selenium grid2 使用远程机器的浏览器
  2. 干货丨零基础学习大数据,搭建Hadoop处理环境
  3. 2条电信宽带 并线_理想更新“货车并线预警”遭用户吐槽 李想:目前功能偏保守 仍在优化...
  4. 安装Microsoft Sysprep工具
  5. ubuntu1804系统设置在哪里_Ubuntu1804(Server 版) 安装及使用
  6. matlab simulink笔记02——延迟模块delay与单位延迟模块unit delay
  7. 一加Ace渲染图曝光:大眼三摄+150W超快闪充
  8. c语言报数函数问题,[编程入门]报数问题-题解(C语言代码)
  9. 哀悼日网站全站变灰代码,最简单的还是ng这种方式...
  10. lsb_release -a linux查看版本未找到命令
  11. silverlight 学习笔记 (八):Prism中MEF的初步认识
  12. C语言 库函数:qsort 详解
  13. 二维高斯函数和正态分布
  14. SentencePiece,subword-nmt,bpe算法
  15. 阿里大文娱宣布成立游戏事业群;茅台瘦身停产155个品牌;苹果iPhone 8硬件成本曝光丨价值早报
  16. gwipr70驱动天空_win7 kmplayer plus设置_gwi pr2 pluswin7驱动_kmplayerplus官方下载
  17. scp lost connection
  18. linux ubuntu bionic,如何升级Ubuntu到18.04 LTS Bionic Beaver
  19. dpdk课程学习之练习笔记四(dns预备)
  20. Java生鲜电商平台-技术方案与文档下载

热门文章

  1. 计算机运行一会内存占用巨大,Win8电脑程序占用很大内存怎么办?
  2. Python中常用的高阶函数
  3. 访问网络计算机的盘符,win7系统下如何禁止访问指定盘符保护电脑安全
  4. Windows API入门系列之六 -自己实现MessageBox
  5. rpc进程Linux,linux RPC 测试(转载)
  6. ue4相机_[UE4]偏门实用技巧合集
  7. gulp修改服务器端口,2.用gulp建立一个服务器
  8. vb.net2019- 调用 opencv
  9. 双非硕士毕业4.5年晋级鹅厂T11之葵花宝典
  10. 【NLP】利用维基百科促进自然语言处理