一、引言

自己早晚都会碰到的问题。

当需要到分离多站点多应用的时候,都是希望用户只要在一个站点登录,其它所有的应用站点都是已登录的状态。

查了下新浪与淘宝的登录的资料,自己实现了一个并做下记录。

二、思路

1.当用户在各个站点点击需要登录认证的页面时,都会跳转到认证服务器(SSO Server)的登录页面。

2.用户在SSO Server进行登录操作并成功时,在SSO Server写入Cookie。

3.SSO Server生成一个Ticket发送给应用服务器。

4.应用服务器写好一个用于接受SSO Server发送过来的Ticket的登录方法。

5.应用服务器根据Ticket将登录Cookie写入到应用服务器里。

三、实现

1.做好认证服务器的登录功能。

2.用户在认证服务器登录成功时:
2.1.情况一:跳转至成功页面,该页面引入一个JS文件,该文件的地址是应用服务器的登录地址。
在这里使用JS来加载登录地址是可以动态调用应用服务器的登录地址的。
例:
 <script src="http://b.com/user/login?ticket=dasfdslafjlsdaflsdfj"></script>

  

2.2.情况二:使用 AJAX 来处理时,在登录成功后自动跳转前,动态加载 JS 文件即可。JS文件的地址同样是应用服务器的登录地址。
例:
success: function (data) {
document.write("<script src='" + data.Ticket + "'><\/script>"); //登录成功时,跳转到到指定页面。
window.location.href = resultUrl;
}
3.在应用服务器写上一个登录方法,该方法用于接受认证服务器发送过来的 Ticket,认证成功时写入应用服务器站点的 Cookie。
我自己使用的方法是:

1.认证服务器登录成功后,对用户账号进行加密,将加然后的字符串做为 ticket 发送给应用服务器。

2.应用服务器接受到 ticket 后对它进行解密,并对自己的用户权限系统进行登录认证,认证成功则写入 Cookie.

3.应用服务器的登录页面要加上P3P,否则会有安全问题无法写入 Cookie。
 
this.Response.AddHeader("P3P", "CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");

SSO 登录功能的实现的更多相关文章

  1. JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)

    1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可 ...

  2. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...

  3. 6 Django REST framework JWT 和登录功能实现

    JWT 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证. 我们不再使用Session认证机制,而使用Json Web Token认证机制. Json web token ( ...

  4. SuperMap-iServer-单点登录功能验证(CAS)

    SuperMap-iServer-单点登录功能验证(CAS) 1.测试目的: 验证SuperMap-iServer使用CAS单点登录的功能是否正常. 2.测试环境: SuperMap-iServer8 ...

  5. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  6. 从无到有实现登录功能以及thinkphp怎么配置数据库信息

    好开心,终于解决了.从学习android到现在写登录功能已经不是一次两次了,如今再写想着肯定是信手拈来,没有想到的是尽然折磨了我一天的时间才搞定它.唉...... 先来看几张截图,这次的登录跟以往的不 ...

  7. 如何在ios中集成微信登录功能

    在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...

  8. php之登录功能实现。

    项目默认存在的东西:jquery库[jquery.min.js] 登录功能实现的基本逻辑: 1.书写前台php功能基本页面:(index.php) a.编写基本功能,比如用户名.密码.登录 b.引用j ...

  9. DWR实现扫一扫登录功能

    前言 <DWR实现后台推送消息到Web页面>一文中已对DWR作了简介,并列出了集成步骤.本文中再一次使用到DWR,用以实现扫一扫登录功能. 业务场景 web端首页点击"登陆&qu ...

随机推荐

  1. J2SE7规范_2013.2_类

    8.1 类的定义   包括普通类和枚举类,枚举(略) 下面都是指普通类:   public只能用于外部类,成员类,不能用于局部类,匿名类 protected和private用于成员类时(待解) sta ...

  2. java的math常用方法

    鉴于java求整时欲生欲死,整理常用math如下: 1: java取整 a:floor向下取整 用法:Math.floor(num) Math.floor(1.9)//1               ...

  3. 用鼠标右键选择DataGridView单元格或行

    在datagirdview_cellmousedown事件中先将CurrentCell(或CurrentRow)的Selected属性设为false,然后将鼠标右键点击的单元格(或行)设为Curren ...

  4. javascript中sleep等待实现

    function sleep(milliSeconds) { var startTime = new Date().getTime(); while (new Date().getTime() < ...

  5. C语言简单实现sizeof功能代码

    sizeof不是函数,而是运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义. 下面给出一个sizeof的一个宏定义实现版本 #defin ...

  6. 百度地图 >> 自定义控件

    前言 百度地图API中预定义的UI控件,比如NavigationControl平移缩放控件,CopyrightControl版权控件,MapTypeControl地图类型控件....,这些都继承自抽象 ...

  7. 理解Android Java垃圾回收机制

    Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆.堆是运行时 ...

  8. opencv 手势识别

    我使用OpenCV2.4.4的windows版本+Qt4.8.3+VS2010的编译器做了一个手势识别的小程序. 本程序主要使到了Opencv的特征训练库和最基本的图像处理的知识,包括肤色检测等等. ...

  9. Java系的大网站架构-LinkedIn和淘宝

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  10. C++转义字符 &amp; keyword

    转义字符: 换行符 \n   水平制表符\t 纵向制表符 \v 退格符 \b 回车符 \r   进纸符 \f 报警(响铃)符 \a 反斜线 \\ 疑问号 \? 单引號 \' 双引號 \"   ...