多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)...

news/2024/5/20 2:47:53/文章来源:https://blog.csdn.net/weixin_34321977/article/details/85774879

单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案。而近期以CSDN明文存储用户密码并泄露用户信息开始的各大网站争先恐后的泄露自己的用户数据库除了暴露了这些网站的良心和智商外,如何设计用户中心已成为架构师们的热点话题之一。在最近一两年的项目经验中有幸接触到各种平台的单点登录系统的开发,所以借此机会总结下B/S架构的单点登录系统的开发经验。

单点登录系统的类别

就目前比较流行的应用来看,单点登录系统主要分为三种类型:一种是基于oauth协议的网络令牌(我是这么叫的),一种是基于Web Service或者简单Http协议实现的Passport机制,还有一种是以openid框架形成的通用账号登录机制。其中,基于oauth协议主要应用在网站外部,比较知名的有Google Account、Facebook Connect和新浪微博链接等;Passport的应用主要是针对同一网站内不同架构不同平台,知名产品则更是数不胜数,例如Google Account账号基本上可以应用全部Google的网站,而国内各大门户无数的应用系统也都只需要一个用户通行证就能畅通无阻;至于OpenID这样会共享用户信息的应用,在国外可能会很火,在国内这样一个用户一寸金的利益集团面前可能会被采纳,所以下面的论述也主要针对前面两种。

单点登录系统的优点

对于用户来讲,最理想的情况下一个账号和密码就可以横行整个互联网,当然这是不可能的。不过现实中稍微有点价值的网站基本上都可以支持各种oauth协议的单点登录系统,所以能使用微博账号、SNS账号或者豆瓣账号登陆的将会为用户带来更多的方便。

对于企业来讲,尤其是业务繁琐复杂的大企业,单点登录系统可以让他们不必为每一个应用都开发用户系统,从而大大降低了工作量,而且统一的用户数据在后期管理和维护中也会更加方便。而基于oauth协议的单点登录系统虽然开发成本高昂,但是能为企业带来最具有价值的第一手用户信息,其收益可观。

单点登录系统的基本流程

单点登录系统(SSO)功能流程图

如上图所示,不管是哪种方式的SSO系统其功能流程大概都是这样:应用系统只需要调用SSO的验证接口验证当前用户是否为已登录用户,如果是未登录用户或者严重不合法则跳转到SSO系统。此时已注册用户可以直在SSO成功登录后返回应用系统,应用系统开始重复上述步骤;而未注册用户则需要先注册或者使用第三方SSO初始化账号,继而重复上述步骤。

不同的是,账号链接这样的SSO系统在登陆成功后返回给应用系统一个key值、用户uid和其他信息,而应用系统一般还是需要在自己的用户系统中新建一个用户账户并且建立一个映射关系来关联SSO系统的返回值。如下图所示是实现绑定微博账号登陆的数据库模型图,其中应App_Users表可以实现一个用户绑定多个单点登录账号,并且这样的用户是不需要再应用系统中存储密码等不必要的信息的。而Passport机制的SSO系统基本上处理所有用户登录、注册、验证的行为,其他应用系统只需要按需取用即可。

微博登录功能的数据库模型

单点登录系统开发难点

从上述功能流程可以看出,使用基于oauth协议的单点登录系统应该是比较好的解决方案,但是没有谁愿意把用户的掌控权拱手让给别人,所以国内很多中小网站就算是没有能力开发自己的passport单点登录系统,也会去选择UCenter这样第三方开源的单点登录系统。而Passport机制的单点登录系统都会面临这么一个问题,如何跨域传递cookies,至于为什么使用cookies、为什么要跨域这么啰嗦的废话我就不多写了,常用的跨域传递cookies的方法有三种:javascript/iframe、header和借助数据库。

javascript/iframe的思路是将单点登录种下的cookie动态传到应用系统,在ajax/jquery广泛应用的时代javascript的是很常见的解决方案,例如UCenter的做法就是在单点登录系统登陆后使用一段javascript动态把cookie传递到所有设置为同步登录的应用,而iframe因为存在诸多弊端不建议使用。

header的解决方法是使用P3P机制进行跨域传输,但是IE必须用加P3P的头信息才可以跨域。看来IE对跨域的限制更为严格!所以要想实现完全跨域,在header头里面加上这一句话最好:header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA div COM NAV OTC NOI DSP COR"');。不过在以前使用P3P协议开发单点登录系统的时候或多或少都有些莫名其妙的问题,看来还是掌握的太少了。

数据库存储,还是以Ucenter为例,在Discuz的cdb_sessions表就是一个结合session实现的跨域传递session的功能,只不过这样的功能会给数据库带来严重的I/O负担,但凡有点流量再碰上点极品的用户这样的数据库性能肯定要被严重拖累。

在我实际开发过程中,一般这样解决单点登录系统的跨域传递cookie问题:首先验证用户来源是否在我们的站点列表内(如果是首先进入SSO则略去这一步),其次验证用户合法性,用户通过验证后,加密cookie和公用密钥后的值将会在用户登录之后作为参数一起跳转回来来源的应用系统,应用系统获取到cookie值后调用SSO接口进行解密、验证等工作。此外,还有一种比较简略的SSO设计方案,所有SSO系统应有的功能都以API形式呈现,接受被授权的应用系统的请求并且返回相应的XML或者Json结果,不同的是,这样做需要应用系统最起码的有自己的登陆和注册页面,适用于同步不得不使用自己用户功能的已经成型的外部应用系统。

此外,在上一篇文章中讨论过的用户密码加密问题,由上图也可以看出,pass字段存储的应该是用户真正的密码经过md5和加上salt值(随机字符串)再次md5,也就是md5(md5(realpass).salt),这个是程序猿应该知道的最基础的加密方式。此外,很多人容易忽略的一个地方是cookie校验,至少我亲身体验了京东修改完用户密码以前种下的cookie依然可以使用,Firebug看了下京东存储的Cookie虽然是加密的,但是明显的验证cookie只是验证了cookie是否为空或者是否可以解密,而完全没有去验证cookie用户是否合法,这样如果知道了京东的加密算法,即便是不知道用户密码,也可以伪造用户cookie进入用户账户。

至于网上很多企业给出的SSO解决方案,我就不喷了,MD,如果真要用,UCenter或者简单的使用新浪、腾讯、豆瓣的网站链接都不错,虽然UCenter问题很多(这个以后再喷),但是最起码的企业对用户具有完全的掌控权。

http://www.itokit.com/2012/0523/74123.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_793639.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报名系统网页导出html,教资报名系统提示网站兼容性怎么办 ie浏览器兼容性操作流程...

教师资格证报名2021年入口已经于1月14日开通,3月13日举行笔试,相信不少考生在报名过程中,遇到兼容性站点添加的问题,报名的浏览器不是IE系列,兼容性站点如何添加呢?为帮助各位考生报考,小编来帮助大家解决…

国外服务器 百度云,百度云加速如何配置网站海外加速

一、纯静态网站加速所谓纯静态网站就是网页全部由HTML纯静态页生成的网页,没有会员注册登陆、在线支付等需要调用数据库的功能。这类网页想要加速很简单,只需要把网页全部缓存至百度云加速节点即可。操作方法如下:1.进入报表下拉的-特定页面规…

java和seo哪个好_seo和java哪个更好

一个seo行业站点,科学的内容制作应该与seo相关,且内容本身是有人搜索的。seo和java哪个更好是有人搜索的语句,且与seo是强相关的,对于站增网来讲,这样的内容再适合不过了。任何一门技术,如果精通&#xff0…

nginx 判断手机端跳转_前后端分离情况下如何做SEO优化?

大家好,我是吉礻羊!前后端分离情况下如何做SEO优化?优化针对这个问题分2个点:1,前后端分离的架构,无法提供搜索引擎可收录的页面,需要搜索引擎蜘蛛拥有执行javascript能力才行,可现实…

网页设计 html鼠标悬停,20个酷炫的鼠标悬停效果的网站设计

原标题:20个酷炫的鼠标悬停效果的网站设计出处:设计之家链接:http://www.sj33.cn/digital/wysj/201706/47570.htmlPixels by Tomer Lernerhttp://tomerlerner.com/Haushttps://www.madeinhaus.com/Canvahttps://www.canva.com/Mainworkshttp:…

Centos 安装GIT 同步发布到网站

之前一直都是用SVN 换了新公司后内部用的是GIT 于是研究一番 发现GIT确实就SVN快很多 于是试着搭建一下 第一步 安装GIT 其实在centos上安装很简单 直接用yum明白 yum install git看下是否安装成功 git --version如果出现版本号证明安装成功 第二部 创建GIT仓库 并发布到网站目…

2016年3月国内网站流量统计5强:搜狗、凤凰网上榜

IDC评述网(idcps.com)03月28日报道:根据中国互联网协会-中国网站排名公布的最新数据显示,截至2016年3月24日,国内网站独立访问量排名前五的是:百度、腾讯网、360搜索、搜狗与凤凰网,如下图。如上…

一个莆田系医院网站提醒的浏览器插件

为什么80%的码农都做不了架构师?>>> 支持一下。源码如下: http://git.oschina.net/wzwahl36/PTHospital.chrome 另外,如果你知道更多莆田医院,可以在源码网站上帮助完善莆田医院信息 转载于:https://my.oschina.ne…

网站安装打包 新建网站[四][文件解压] 上

在新建网站之前,就是要把打包好的项目拷贝一份到IIS指定的路径上,同时,还要为个别目录设置相应的访问权限! 于是就产生了两件事: 1。拷贝-》[这里我是采用RAR打包,然后解压] 2。设置权限 如果是用拷贝方式,…

各种资源网站收集

1.Linux资源 Linux 2.backbonerequirejsbootstrap学习 backbonerequirejsbootstrap backbonerequire.js backbone 3.bootstrap样式 bootstrap 4.angularjs各版本下载AngularJS官网本身采用AngularJS库构建,页面中的AngularJS库通过Google的CDN(内容分发网…

大型网站架构系列:负载均衡详解

面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分…

网站备案的注意事项

客户因网站备案问题困扰许久, 网站备案是否成功关乎到网站能否正常上线,所以各位亲们,在办理公司网站业务的时候,务必做到备案正规化,严格化,细致化。做到这个要注意以下一些方面:一、您的网站…

Equifax阿根廷网站竟使用“admin”为默认账号密码

在发生“史上最大规模之一”的数据泄露事件之后,你是否还相信“信贷监控公司”Equifax 能够确保个人数据的安全?据外媒报道,本次时间造成 1.43 亿人名、社保号、家庭住址、以及更多信息被入侵,且专家们仍在继续戳破该公司的安全漏…

【直播】DCloud CTO崔红保:如何玩转H5网站快速转换成App?

将H5网站转换成App,不是简单套个WebView壳完事,关键是达到原生版的功能和体验。wap2app是一款将H5网站转换成App的前端开发框架,底层基于HTML5PLUS引擎,可以调用几十万原生API,实现更强大的推送、支付、分享、定位等能…

网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)

在平时的运维工作中,我们运维人员需要清楚自己网站每天的总访问量、总带宽、ip统计和url统计等。 虽然网站已经在服务商那里做了CDN加速,所以网站流量压力都在前方CDN层了 像每日PV,带宽,ip统计等数据也都可以在他们后台里查看到的…

如何将视频网站中的视频插入到博客中

如何将视频网站中的视频插入到博客中拿优酷网的视频(http://v.youku.com/v_show/id_XMjA2NTA3NzY0.html)为例,操作方法如下:1.找到该视频下方的分享按钮,如下,将flash格式代码复制下来;2.选择编…

我的第一个mvc网站发布.馒头日记网

最近跟着园子里的老鸟们学们了.net mvc3 为了温习一下学习的知识,闲来在家无事,用了二周每天夜晚的时间,做了一个项目,馒头日记网,感兴趣的朋友,可以来站参观, 先贴出一下项目的结构. 本想今天就把代码 共享给大家,结果忘记代U盘,…

开源小程序CMS网站, JeeWx-App-CMS 1.0 首版本发布

为什么80%的码农都做不了架构师?>>> JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的小程序公司官网。项目结构简单,逻辑清晰,代…

HTTP 网站在 Chrome 浏览器的死期将近:统统被标记为不安全

2019独角兽企业重金招聘Python工程师标准>>> Chrome 68 稳定版更新将于7月23日上线,之后未运行 HTTPS 协议但具有有效 TLS 证书的网页将在 Chrome 地址栏中展示“不安全”的警告信息。该警告信息将应用于通过 Chrome 访问的面向互联网的网站和企业/私有内…

某在线电影网站迁移kangle成功案例

为什么80%的码农都做不了架构师?>>> 1.背景介绍 某在线电影网站(为了隐私,这里隐去名字和域名),随着访问量的上涨,之前使用IIS,其cpu经常性的100%,长期90%以上。网站访问打开奇慢,严重影响用户体验&#…