网站跨站点单点登录

news/2024/5/20 2:32:02/文章来源:https://blog.csdn.net/dingshutong/article/details/54863124

昨天和几位朋友探讨到了这个话题,发现虽然单点登录,或者叫做独立的passport登录虽然已经有了很多实现方法,但是能真正了解并实现的人却并不太多,所以些下此文,希望从原理到实现,能让大家了解的多一些


至于什么是单点登录,举个例子,如果你登录了msn messenger,访问hotmail邮件就不用在此登录。
一般单点登录都需要有一个独立的登录站点,一般具有独立的域名,专门的进行注册,登录,注销等操作

我们为了讨论方便,把这个登录站点叫做站点P,设其Url为http://passport.yizhu2000.com,需要提供服务的站点设为A和B,跨站点单点登录是指你在A网站进行登录后,使用B网站的服务就不需要再登录


从技术角度讲单点登录分为:

  • 跨子域单点登录
  • 完全跨单点域登录

跨子域单点登录

所谓跨子域登录,A,B站点和P站点位于同一个域下面,比如A站点为http://blog.yizhu2000.com     B站点为 http://forum.yizhu2000.com,他们和登录站点P的关系可以看到,都是属于同一个父域,yizhu2000.com,不同的是子域不同,一个为blog,一个为forum,一个是passport

我们先看看最常用的非跨站点普通登录的情况,一般登录验证通过后,一般会将你的用户名和一些用户信息,通过某一密钥进行加密,写在本地,也就是一个加密的cookie,我们把这个cookie叫做--票(ticket)。

需要判断用户是否登录的页面,需要读取这个ticket,并从其中解密出用户信息,如果ticket不存在,或者无法解密,意味着用户没有登录,或者登录信息不正确,这时就要跳转到登录页面进行登录,在这里加密的作用有两个,一是防止用户信息被不怀好意者看到,二是保证ticket不会被伪造,后者其实更为重要,加密后,各个应用需要采用与加密同样的密钥进行解密,如果不知道密钥,就不能伪造出ticket,

(注:加密和解密的密钥有可能不同,取决于采用什么加密算法,如果是对称加密,则为同一密钥,如果是非对称,就不同了,一般用私钥加密,公钥解密,但是无论怎样,密钥都只有内部知道,这样伪造者既无法伪造也无法解密ticket)

跨子域的单点登录,和上述普通登录的过程没有什么不同,唯一不同的是写cookie时,由于登录站点P和应用A处于不同的子域,P站写入的cookie的域为passport.yizhu2000.net,而A站点为forum.yizhu2000.net,A在判断用户登录时无法读到P站点的ticket

解决方法非常简单,当Login完成后P站点写ticket的时候,只需把cookie的域设为他们共同的父域,yizhu2000.net就可以了:cookie.domain="yizhu2000.net",A站点自然就可以读到这个ticket了

ASP。Net的form验证本身实现了这个机制,大家可以参考http://blog.csdn.net/octverve/archive/2007/09/22/1796338.aspx

ASP.NET身份验证信息跨域共享状态

在ASP.NET 2.0 中只需修改web.config文件即可,修改方法如下:

<authentication mode="Forms"> 
<forms name=".ASPNETFORM"   domain="imneio.com" loginUrl="/login.aspx" defaultUrl="/default.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" enableCrossAppRedirects="false" cookieless="UseDeviceProfile" /> 
</authentication>

domain指定了cookie保存的域,只要保存的是 abc.com形式或者.abc.com的形式,那么其二级域名都可以共享此cookie。

此外,web.config标签中的<sessionState >也做相应修改,mode改为StateServer或者SqlServer,那么里面的session信息也就全部可以共享了。

StateServer需要在服务中开启“asp.net状态服务”的服务

http://www.imneio.com/2007/11/17/aspnetnote1/,以上斜体内容摘自此链接

完全跨单点域登录

完全跨域登录,是指A,B站点和P站点没有共同的父域,比如A站点为forum.yizhu1999.net,B站点为blog.yizhu1998.net,大家可以参考微软旗下的几个站点http://www.live.com,www.hotmail.com,这两个站点就没有共同的父域,而仍然可以共用登录,怎样才能实现呢?请参考下图,由于这种情况ticket比较复杂,我们暂时把P站点创建的的ticket叫做P-ticket,而A站点创建的ticket叫A-ticket,B的为B-ticket

login

 

由于站点A(forum.yizhu1999.com)不能读取到由站点P(passport.yizhu2000.com)创建的加密ticket,所以当用户访问A站点上需要登录才能访问的资源时,A站点会首先查看是否有A-ticket,如果没有,证明用户没有在A站点登录过,不过并不保证用户没有在B站点登录,(重复一下,既然是单点登录,当然无论你在A,B任意一个站点登录过,另外一个站点都要可以访问),请求会被重定向到p站点的验证页面,验证页面读取P-ticket,如果没有,或者解密不成功,就需要重定向登录页面,登录页面完成登录后,写一个加密cookie,也就是P-ticket,并且重定向到A站点的登录处理页,并把加密的用户信息作为参数传递给这个页面,这个页面接收登录页的用户信息,解密后也要写一个cookie,也就是A-ticket,今后用户再次访问A站点上需要登录权限才能访问的资源时,只需要检查这个A-cookie是否存在就可以了

当用户访问B站点时,会重复上面的过程,监测到没有B-ticket,就会重定向到P站点的验证页面,去检查P-ticket,如果没有,就登录,有则返回B的登录处理页面写B-ticket

 

注销的时候需要删除P-ticket和A-ticket

 

logout

 

怎么删除cookie:本来以为这个不是问题,不过还是有朋友问道,简单的说其实是创建一个和你要删除的cookie同名的cookie,并把cookie的expire设为当前时间之前的某个时间,不过在跨子域的删除cookie时有一点要注意:必须要把cookie的域设置为父域,在本文中为yizhu2000.com

为了保证各个环节的传输的安全性,最好使用https连接。

原文地址:http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131976.html

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

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

相关文章

如何添加网站的浏览器 ico 图标

什么是网站 ICO 图标&#xff1f; 打开微软、百度等网站后看到浏览器的标题栏、地址栏&#xff0c;多浏览器的标签上都显示了一个小图标&#xff0c;如 &#xff0c;这里说的就是这个东东。 如何制作 ICO 图标&#xff1f; 这里使用最简单的办法。因为 ico 格式图片比较特殊&a…

一键SSH宝塔/Shell原生安装LNMP(Centos7.5 + Nginx + MySQL +PHP)+thinkphp/Wordpress搭建网站(附源码)

可以使用宝塔工具搭建&#xff0c;也可以使用我下面的教程进行搭建。 一、宝塔工具搭建具体操作&#xff1a; ssh登录centos服务器&#xff0c;下载安装宝塔工具centos版本&#xff0c;一键安装LNMP环境。大概需要10-20分钟吧&#xff1b;安装完成后进入应用市场&#xff0c;选…

怎么做好企业网站关键词优化

一、关键词的选择 1、企业品牌词 品牌关键词非常重要&#xff0c;可以说如果不重视品牌词部署&#xff0c;会影响到网络营销效果。品牌关键词是一个网站的名称&#xff0c;具备唯一性&#xff0c;方便用户记忆。加上消费者对品牌的认知度是非常高&#xff0c;具备品牌的网站能…

【网站推荐】Event Registry‘s News

【网站推荐】Event Registrys News 公众号&#xff1a; ChallengeHub 1、简介 利用AI的力量将新闻内容转化为解释性的分析报告。Event Registry是世界领先的新闻情报平台&#xff0c;使组织能够跟踪世界事件并分析其影响。 Event Registrys News 官方网站&#xff1a;https:/…

在线教育专业建站工具 EduWind ,源码下载,源码分享网整理

在线教育专业建站工具 EduWind &#xff0c;源码下载&#xff0c; Eduwind是由北京水木信步网络科技有限公司开发的网校服务&#xff0c;公司位于清华科技园。目前&#xff0c;EduWind的产品系列包括以下两大版本&#xff1a; EduWind网校开源软件&#xff1b; EduWind网校Saa…

web php+mysql 网站优化方向

1.PHPMySql的存储缺点 在大部分的PHP的网站开发当中&#xff0c;我们往往采用的数据存储方式是phpmysql,因此就会产生如下图所示的请求方式&#xff1a; 以上的架构对一般对于访问量不大的网站没有任何问题&#xff0c;例如&#xff1a;个人博客网站&#xff0c;小公司的企业网…

谷歌浏览器“无法添加来自此网站的应用、扩展程序和应用脚本”的最简单办法

网上其他的办法都试了 有点坑 最简单的解决办法就是打开开发者模式 关了再开&#xff0c;再拖入crx就好了 具体位置&#xff1a;选项——更多工具——拓展程序 或者直接在浏览器里输入chrome://extensions/

大型网站的可伸缩性架构如何设计?

1. 网站架构的伸缩性设计 1.1. 不同功能进行物理分离实现伸缩 纵向分离&#xff08;分层后分离&#xff09;&#xff1a;将业务处理流程上的不同部分分离部署&#xff0c;实现系统伸缩性。 横向分离&#xff08;业务分割后分离&#xff09;&#xff1a;将不同的业务模块分离…

千万级用户的大型网站,应该如何设计其高并发架构?

目录 &#xff08;1&#xff09;单块架构 &#xff08;2&#xff09;初步的高可用架构 &#xff08;3&#xff09;千万级用户量的压力预估 &#xff08;4&#xff09;服务器压力预估 &#xff08;5&#xff09;业务垂直拆分 &#xff08;6&#xff09;用分布式缓存抗下读…

react+redux+ant+axios+iframe实现网站门户

一个框架壳子&#xff0c;技术栈reactreduxantaxiosiframe,实现侧边栏与导航栏还有头部&#xff0c;对打开的页签进行缓存&#xff0c;使用iframe与各个子系统页面相连。 对打开的页签进行缓存即使刷新页面的tag也不会丢失&#xff0c;界面如下&#xff1a; 这个实现的功能是侧…

某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。

http://www.mianwww.com/html/2012/11/17432.html PS: 据说这是迅雷的一道面试题&#xff0c;不过问题本身具有很强的真实性&#xff0c;所以本文打算按照真实场景来考虑&#xff0c;而不局限于面试题的理想环境。 存储结构 首先&#xff0c;我们用一张用户积分表user_score来…

linux服务器做301跳转,网站seo怎么实现301跳转,linux服务器设置301重定向方法!

原标题&#xff1a;网站seo怎么实现301跳转,linux服务器设置301重定向方法! 在SEO优化中&#xff0c;这些已经存在可能已被收录的页面链接&#xff0c;既不能贸然的删除又不能放任不管&#xff0c;由于这跟网站的权重是挂钩的&#xff0c;以是这个时辰301定向就派上用场了。301…

WEB阶段6:过滤器监听器全局字符修改案例用户权限过滤案例装饰者模式过滤敏感词汇统计当前网站在线人数

过滤器&监听器&全局字符修改案例&用户权限过滤案例&装饰者模式过滤敏感词汇&统计当前网站在线人数 回顾 JSP的页面脚本元素 组成部分语法格式JSP代码片段<% Java代码 %>JSP声明<%! 声明全局变量 %>JSP脚本表达式<% 变量值 %>注释<…

扩展 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)

客户需求&#xff1a; jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像&#xff08;onMouseOver/onMouseOut&#xff09; 如图所示&#xff0c;Datagrid 鼠标悬停/离开数据行时切换了不同的样式显示&#xff1a; 此时用谷歌开发者工具审查鼠标悬停行元素时…

推荐一款在线伪原创工具,很适合做seo的朋友

打开常用浏览器,360极速&#xff0c;UC&#xff0c;谷歌浏览器均可这里就打开谷歌做演示 浏览器中输入http://www.yzcopen.com/选着站长seo工具 找到第一行"文章伪原创"工具 复制自己的文章即可点击生成伪原创 伪原创文章对于各大搜索引擎来说&#xff0c;收录会很不…

分享一波我是怎么让一个新网站IP量一天翻15倍的,腾讯云:DDOS攻击

一直想写一篇文章&#xff0c;和大家分享一下我的一个在线工具网站如何将网站的日IP访问量做到一天翻15倍的技巧。现在想想是时候可以分享一些了&#xff01;正如标题所说&#xff0c;在一定时间内做一个日IP访问量一天翻15倍的的网站有可能吗&#xff1f;当然有可能了。这也是…

查看当前网站的cookie的两种快捷方法

1.在浏览器的地址栏输入&#xff1a;javascript:alert(document.cookie) (不区分大小写)&#xff0c;就会弹出你在当前网页登录的cookie信息。 注意&#xff1a;你把以上复制进入地址栏后会发现&#xff0c;“javascript”字符串消失不见&#xff0c;不管“javascript”里面哪…

大型网站后台架构的演变

随着用户访问量的不断增加&#xff0c;网站的后台也会不断变化以应对需求。本文主要从一个小型网站到大型网站的过度与变化来陈述。 1.1 网站后台架构 主要指由web server 、应用服务器、数据库、存储、监控等组成的网站后台系统。 1.2 架构演变 个人站点后台架构。如图2-1…

大型网站的高可用分析

本文主要分析网站的高可用性&#xff0c;从应用需求、用户角度展开分析。 1.1 高可用性 “高可用性”(High Availability) 通常用来描述一个系统&#xff0c;经过特殊设计&#xff0c;减少停止服务的时间&#xff0c;从而使其服务保持高度的可使用性。 计算机系统的可靠性用…

大型网站后台架构的web server与缓存

网站的web server与缓存 1.1 Web server Webserver 用来解析HTTP协议。当web 服务器接收到一个HTTP请求时&#xff0c;会返回一个HTTP响应&#xff0c;例如送回一个HTML页面。为了处理一个请求&#xff0c;web服务器可以响应一个静态页面或者图片。进行页面跳转&#xff0c;…