一、引言

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

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

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

二、思路

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. codeforces 704B - Ant Man 贪心

    codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x) ...

  2. 利用redis分布式锁的功能来实现定时器的分布式

    文章来源于我的 iteye blog http://ak478288.iteye.com/blog/1898190 以前为部门内部开发过一个定时器程序,这个定时器很简单,就是配置quartz,来实现定 ...

  3. mapreduce的调度算法和job调优

    调度算法: mapreduce当有很多的作业在执行的时候,是按照什么顺序去执行的? 调度算法顺序需要关注: 1.提高作业的吞吐量. 2.要考虑优先级. 三种调度器:如果作业跑不完,并且机器资源利用率比 ...

  4. 【Spark学习】Apache Spark集群硬件配置要求

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4135912.html 目录 存 ...

  5. 使用SignalR实现比特币价格实时刷新

    ASP.NET SignalR是微软支持的一个运行在 Dot NET 平台上的 HTML Websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重 ...

  6. 命令行dump anr traces.txt文件

    adb shell su ps //这里找到自己app对应的pid pid //退出shell 模式 adb pull /data/anr/traces.txt f:\log

  7. rop框架签名功能控制

    平台级控制: 通过<rop:annotation-driven/>的 sign-enable 属性即可开启或关闭服务平台签名验证功能:<rop:annotation-driven s ...

  8. POJ2001Shortest Prefixes(字典树)

    题目大意就是帮你给N条字符串,每条长度不超过20.问要将他们单一识别出来,每个字符串最短可以缩为多短. 如: abc abcdefg bc adef 这四个字符串就可分别缩写为 abc abcd b ...

  9. Spring Data JPA教程,第一部分: Configuration(翻译)

    Spring Data JPA项目旨在简化基于仓库的JPA的创建并减少与数据库交互的所需的代码量.本人在自己的工作和个人爱好项目中已经使用一段时间,它却是是事情如此简单和清洗,现在是时候与你分享我的知 ...

  10. js两种创建对象方式

    js创建方法的两种方式 <%@ page language="java" contentType="text/html; charset=ISO-8859-1&qu ...