网站跨站点单点登录

news/2024/5/16 21:29:27/文章来源:https://blog.csdn.net/weixin_33946605/article/details/86468638

昨天和几位朋友探讨到了这个话题,发现虽然单点登录,或者叫做独立的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.luyixian.cn/news_show_768921.aspx

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

相关文章

利用HTML5/CSS3写一个网站布局

页面视图&#xff1a; 代码查看&#xff1a; https://github.com/YanHSana/ResponsiveWesite

大型网站技术架构(三)架构核心要素

2019独角兽企业重金招聘Python工程师标准>>> 所谓架构&#xff0c;一种通俗的说法就是“最高层次的规划&#xff0c;难以改变的决定”&#xff0c;这些规划和决定奠定了事物未来发展的方向和最终的蓝图。 而软件架构即“有关软件整体结构与组件的抽象描述&#xff0…

浅谈大型网站动态应用系统架构

转自&#xff1a;http://news.cnblogs.com/n/70241/ 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存…

网站推荐:Google音乐搜索引擎

Lander之前在网路上在线听或下载MP3都是通过百度的MP3搜索&#xff0c;不知道大家日常都用什么来着。使用百度音乐搜索常被一些问题困扰&#xff0c;如下载比较麻烦&#xff0c;下载的音乐质量无法保证&#xff08;其实在国内&#xff0c;几乎绝大部分网站提供的MP3都是盗版的&…

打包Asp.Net 网站成为一个exe 方便快捷的进行客户演示

在Asp时代有一个NetBox 产品可以把整个Asp网站AllInOne的打包成一个exe&#xff0c;在没有IIS的情况下可以单独运行这个exe来开启整个网站。在Asp.Net 下一直没有类似的产品出现&#xff0c;可能是IIS已经非常的强大了&#xff0c;不需要类似的产品了? 但是在某种场景下还是需…

网站日志返回304状态码

之前在seo中心里面听老师讲过一个seo者是需要去分析网站日志的。而如果你的网站还没有网站日志这个功能的话&#xff0c;那么我建议你可以去换一个空间了。因为做seo就需要有网站日志。 在哪里查网站日志呢&#xff1f;以西北互联的香港空间举例。登陆后台之后会有一个叫网站日…

在线评论html,在线评论与SEO——评论内容的重要性

所有人都知道搜索引擎喜欢高质量的原创内容&#xff0c;那么到底什么算原创、如何产出原创内容、哪些原创内容属于高质量——一直是站长们纠结的问题。最近有人向小编推荐了一篇文章&#xff0c;作者用BrightLocal产出的消息者报告数据作为依据&#xff0c;表现了在线评论内容在…

(一)新手搭建、备份、还原Sharepoint门户网站之--新建篇

1. 企业门户安装 1.1 安装前期准备 安装前先准备好以下安装程序&#xff1a;Windows Server 2003(或以上)、SQL Server 2005、.NET Framework 3.0、Office SharePoint Server 2007。 1.2 安装必要的Windows组件 首先安装好一台Windows Server 2003的服务器&#xff0c;并安装几…

学用MVC4做网站一:修改密码1.4

一、用户 1.1用户注册 1.2用户登录 1.3修改密码 1.4修改资料 在用户登陆成功后要跳转到一个页面&#xff0c;暂且叫做用户中心吧。在【UserController】添加[default] action [UserAuthorize]public ActionResult Default(){userRsy new UserRepository();var _user userRsy.…

关于大型网站技术演进的思考系列博客

2019独角兽企业重金招聘Python工程师标准>>> 出处:夏天的森林博客 关于大型网站技术演进的思考&#xff08;一&#xff09;--存储的瓶颈&#xff08;1&#xff09;关于大型网站技术演进的思考&#xff08;二&#xff09;--存储的瓶颈&#xff08;2&#xff09;关于大…

阿里云搭建自己的网站

1、下载xampp、wordpress复制到自己的服务器安装

构建httpd网站服务器(二) -- httpd服务的访问控制和基于域名、IP、端口的虚拟主机...

httpd服务访问控制概述httpd服务的访问控制作用&#xff1a;控制对网站资源的访问为特定的网站目录添加访问授权常用访问控制方式&#xff1a;客户机地址限制用户授权限制Order配置项&#xff0c;定义控制顺序先允许后拒绝&#xff0c;默认拒绝所有&#xff1a;Order allow,den…

怎样提高用户访问,提高网站页面深度浏览?

想必&#xff0c;很多的网站优化者&#xff0c;都遇到过类似的情况。访客进入到首页&#xff0c;不会进行二次的点击&#xff0c;而选择的是跳出页面。不能深度性的浏览&#xff0c;Spider会记录下。这样的现象&#xff0c;对于网站权重上的提升是负面影响的。因此。如何设计好…

使用Fail2ban来防御你的服务器和网站攻略

Fail2ban可以通过你的日志log匹配规则进而实现你想要的功能&#xff0c;比如禁止掉那些破解你密码的人。下面就讲一下在LINUX上Fail2ban的安装吧首先第一步确定你的系统进而安装&#xff1a;Centos复制代码$ sudo yum install fail2banFedora复制代码$ sudo yum install fail2b…

打造基于hadoop的网站日志分析系统:(2)Hadoop的编译

2019独角兽企业重金招聘Python工程师标准>>> 环境&#xff1a;ubuntu14.04 64位 前提&#xff0c;系统已经安装了jdk并且环境变量配置完成。 1.下载hadoop源码 wget http://mirror.esocc.com/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.gz&#xff0c…

在线反汇编代码网站

https://godbolt.org/ 下面是一个在线运行汇编代码的网站 https://www.tutorialspoint.com/compile_assembly_online.php

很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天做个demo(续集)...

有些功能部分手机不能使用&#xff0c;网站&#xff0c;通讯录&#xff0c;wifi基本上每个手机都可以使用。&#xff08;浏览器自带的扫描就够了&#xff0c;QQ扫码和微信扫码部分手机不能直接连接wifi&#xff09; 在看之前你可以扫一扫下面几个二维码先看看效果&#xff1a; …

php 网站 文件寻址,如果访问存储器时使用bp寻址,则默认的段寄存器是什么?...

如果访问存储器时使用bp寻址&#xff0c;则默认的段寄存器是“SS”&#xff0c;即堆栈段。SS堆栈段通常是指采用堆栈方式工作的一段内存区域&#xff1b;在采用段式内存管理方式进行程序内存分配的架构中&#xff0c;堆栈段用来存放局部变量和函数返回地址。段寄存器是因为对内…

在IIS中配置MIME类型组建Wap网站

1&#xff0e;创建站点文件夹 首先你要在IIS上创建一个新的站点。 2&#xff0e;创建新的MIME类型 首先选择“WAP”站点的“属性”&#xff0c;然后选择“HTTP 头”标签&#xff0c;在“MIME映射”部分&#xff0c;点击“文件类型…”后再单击“新类型…”输入以下信息&#xf…

1小时建网站

2019独角兽企业重金招聘Python工程师标准>>> 第一步&#xff0c;申请域名&#xff0c;去万网或者新网申请 如 www.baidu.com 第二步&#xff0c;购买服务器。 &#xff08;如香港的&#xff0c;一个月9块钱&#xff0c;好处是不用备案&#xff0c;国内的要备案&a…