SSO单点登陆
一句话,就是能让各个不同的域名带回相同的认证信息即可。
实现方法,就是把其中一个登陆后,把认证的信息分别保存在不同域名下的 cookie,
当在验证是否登陆时,验证 cookie,如果是子域名,这个则直接用 cookie设置作用域为顶级即可。
以下说的是不同的域名,其中是用了 script 的功能,分别去访问各个页面,如域名:
www.a.com
www.b.com
www.c.com
各个域名下放一个 index.php文件,作为验证用,
index.php测试代码如下:
<?php
print_r($_COOKIE);
//这里解析 cookie中的信息,如果验证通过,则生成 cookie写到相应的域名下
?>
假设统一的登陆的页面是
www.c.com/login.php,www.c.com/do.php先作前端验证,如果正确,则允许提交
login.php 代码如下
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>sync login</title>
<script src="jquery-1.8.3.min.js" type="text/javascript"></script>
</head>
<body>
<form action="http://www.c.com/do.php" method="post">
<input type="text" name="username" placeholder="用户名"/>
<input type="text" name="password" placeholder="密码"/>
<input type="submit" value="登录"/>
</form>
<script>
$(document).ready(function(){
$("input[name='username']").click(function(){
var username = $("input[name='username']").val();
var password = $("input[name='password']").val();
var url ="do.php";
$.post(url,{code:name},function(data){
if(data.error==false)
{
return true;
}else
{
alert(data.message);
return false;
}
},'json');
});
});
</script>
</body>
</html>
do.php代码如下:
<?php
$redirect = empty($_REQUEST['redirect']) ? 'http://www.a.com' : $_REQUEST['redirect'];
if(empty($_REQUEST['username']) || empty($_REQUEST['password'])){
header('Loaction:http://'.urldecode($redirect));
exit;
}
$urls = array(
'www.a.com/a.php',
'www.b.com/a.php',
'www.c.com/a.php'
);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<?php foreach($urls as $url){?>
<script type="text/javascript" src="http://<?php echo $url.'?code='.$_REQUEST['code'] ?>"></script>
<?php } ?>
<title>登陆验证</title>
</head>
<body>
<script type="text/javascript">
window.onload=function(){
location.replace('<?php echo $redirect; ?>');
}
</script>
</body>
</html>
这样,直接访问 www.a.com/www.b.com/www.c.com就可以获取到 cookie信息了
以上是基本的原理,在各个页面作下验证判断就可以直接用了,一般域名少的,
足够使用,一般也不会太多的域名
SSO单点登陆的更多相关文章
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...
- session问题总既然(深入理解)&Token问题理解&sso单点登陆理解实现
一.Session使http协议成为有状态协议(浏览器cookie本地这个session,服务器端也有这个session) 1.ajax前端登陆无法保存session,造成无法维持登陆状态(http本 ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- 京东SSO单点登陆实现分析
京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该 ...
- Java电商项目-8.实现SSO单点登陆
目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...
- springSession框架来实现sso单点登陆
介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取 ...
- 京东商城跨域设置Cookie实现SSO单点登陆过程
可以先看下这边文章:http://blog.chinaunix.net/uid-25508399-id-3431705.html 1.点击首页的登陆按钮跳转到京东的登陆中心https://pass ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...
- ASP.NET在不同情况下实现单点登陆(SSO)的方法
第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...
随机推荐
- 用scikit-learn实现朴素贝叶斯分类器 转
原文:http://segmentfault.com/a/1190000002472791 朴素贝叶斯(Naive Bayes Classifier)是一种「天真」的算法(假定所有特征发生概率是独立的 ...
- 获取Spring-boot系统环境变量方法
public static ConfigurableApplicationContext context = null; public static void main( String[] args ...
- android 代码设置、打开wifi热点及热点的连接
用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可以通 ...
- MJViewController的view的创建
- 如何识别Baiduspider
上周百度站长平台接到某站长求助,表示误封禁了Baiduspider的IP,询问是否有办法获得Baiduspider的所有IP,打算放入白名单加以保护,防止再次误封.在此要告诉各位站长,Baiduspi ...
- 看linux连接进程占用的实时流量iftop netatop NetHogs
因为新工厂的机器上面的业务混合部署非常严重,加上内网外网共用一个网卡(这个更不可思议),导致有时要定位一些进程流量的问题非常困难,所以最近花了点时间在网上搜集了一把 (aptitude search ...
- Laravel Eloquent 的条件不等于
方法一: 使用Eloquent的where where('id', '!=' , 2) 方法二: 使用Eloquent的whereNotIn ->whereNotIn( 'id', [2]) 参 ...
- 详解HTML<head> 头标签元素的意义以及使用场景
HTML<head>头部分的标签.元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性.移动互联网时代,he ...
- Git CMD - mv: Move or rename a file, a directory, or a symlink
命令格式 git mv [-v] [-f] [-n] [-k] <source> <destination> git mv [-v] [-f] [-n] [-k] <so ...
- Android之屏幕测试
MainActivity: package com.example.touchscreentest; import android.os.Bundle; import android.R.layout ...