基于Cookie的SSO登录分析和实现,cookiesso登录_PHP教程
基于Cookie的SSO登录分析和实现,cookiesso登录
什么是SSO?
现在很多大的互联网公司都会有很多的应用,比如以下是淘宝网的截图:

天猫 聚划算 头条等都是不同的应用,有的甚至采用完全不同的域名,但是所有在淘宝注册的用户都是使用的一套用户名和口令,如果在这些系统直接切换做不到登陆状态的同 步,体验是非常差的。再举个栗子,很多公司内部系统也有很多个,比如HR系统,财务系统,考勤系统等等,如果员工在一个系统登陆了,跳转到另外一个系统还 需要登陆,就会让人很不爽...
基于此,SSO(Single Sign On)
应运而生。当然,我们来现实这个需求的方法有很多种,使用Cookie是其中比较简单的方式,主要需要解决的问题是:Cookie
是不能跨域传递的,如何将一个域的Cookie
通知给其它应用(不在同一个域)?
so
,如果你对cookie
机制不太熟悉,请先google
,并大致了解为什么cookie
会设计成不能跨域等相关问题。
如何实现?
SSO有以下几种方式实现
共享Cookie
当我们的子系统都在一个父级域名下时,我们可以将Cookie种在父域下,这样浏览器同域名下的Cookie则可以共享,这样可以通过Cookie加解密的算法获取用户SessionID,从而实现SSO。
但是,后面我们发现这种方式有几种弊端:
a. 所有同域名的系统都能获取SessionID,易被修改且不安全;
b. 跨域无法使用。
ticket验证,我们目前采取的是这种方式
这种实现的SSO有以下几个步骤:
a. 用户访问某个子系统,发现如果未登录,则引导用户跳转到SSO登录页面;
b. 判断SSO是否已经登录;
c. 如果已经登录,直接跳转到回调地址,并返回认证ticket;
d. 如果未登录,用户正确输入用户名/密码,认证通过跳转到回调地址,并返回认证ticket;
e. 子系统获取ticket,调用SSO获取用户uid等信息,成功后让用户登录。
前面已经说了,如何通过Cookie
来实现SSO
,主要是如何解决跨域问题。首先来谈谈Set-Cookie
中的domain
属性。
Cookie domain
为了让Http
协议在一定程度上保持上下文,server
在响应的头部可以加入Set-Cookie
来写入一些数据到客户端,Set-Cookie
中的domain
字段用来表示这个cookie
所在的域。
栗子:
我们访问www.cookieexm.com
,如果server
在返回头部中加入了Set-Cookie
,如果不指定domain
,那么默认这个cookie
的域就是www.cookieexm.com
,也就是只有访问www.cookieexm.com
时客户端才会把这个cookie
返给服务端。
如果我们指定domain
为.cookieexm.com
,那么客户端在访问以下域名:www.cookieexm.com www1.cookieexm.com a.cookieexm.com ***.cookieexm.com
时都能够把cookie
返回。
所以,我们得出一条结论:客户端对cookie的domain的匹配是从结尾进行匹配的,有了这个基础,我们就可以实现我们的SSO
登陆了。
cookie中需要注意的
- 设置为http-only
- 涉及登录凭证(如票据或者用户名)应该加密
- cookie不能存放隐私数据
具体方案
假设我们需要在如下子系统 **.a1.a2 **.b1.b2 **.c1.c2
间实现单点登录,首先我们需要一个专门用于单点登陆的认证系统(sso.s1.s2)。假设目前系统处于未登录状态,访问www.a1.a2
为例:

分别看一下每个步骤作用:
说明:
业务认证系统不一定存在,有些不是太敏感的系统可以直接从SSO Authorization
重定向到业务系统,并把SSO
的认证信息带过去。
承接上文,此时,如果用户访问www.b1.b2
应用,如下图所示:

与访问www.a1.a2
不同的是我们在重定向到SSO Authorization
时已经不需要再去输入用户名,因为sso.s1.s2
此时已经存有cookie
,直接用cookie
验证。
以上,就是一个简单的基于Cookie
的登陆系统。
其中几个问题需要重点解决
- 如何高效存储大量临时性的信任数据
- 如何防止信息传递过程被篡改
- 如何让SSO系统信任登录系统和免登系统
对于第一个问题,一般可以采用类似与memcached的分布式缓存的方案,既能提供可扩展数据量的机制,也能提供高效访问
对于第二个问题,一般采取数字签名的方法,要么通过数字证书签名,要么通过像md5的方式,这就需要SSO系统返回免登URL的时候对需验证的参数进行 md5加密,并带上token一起返回,最后需免登的系统进行验证信任关系的时候,需把这个token传给SSO系统,SSO系统通过对token的验证 就可以辨别信息是否被改过
对于最后一个问题,可以通过白名单来处理,说简单点只有在白名单上的系统才能请求生产信任关系,同理只有在白名单上的系统才能被免登录。
转载地址:http://www.jianshu.com/p/baa94d5f1673

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP를 사용하여 효율적이고 안정적인 SSO 싱글 사인온을 달성하는 방법 소개: 인터넷 애플리케이션의 인기로 인해 사용자는 수많은 등록 및 로그인 프로세스에 직면하게 되었습니다. 사용자 경험을 개선하고 사용자 등록 및 로그인 간격을 줄이기 위해 많은 웹사이트와 애플리케이션에서 Single Sign-On(Single Sign-On, SSO라고도 함) 기술을 채택하기 시작했습니다. 이 기사에서는 PHP를 사용하여 효율적이고 안정적인 SSO Single Sign-On을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. SSO Single Sign-On 원칙 SSO Single Sign-On은 신원 인증 솔루션입니다.

GitLab의 권한 관리 및 Single Sign-On 통합 팁에는 특정 코드 예제가 필요합니다. 개요: GitLab에서는 권한 관리 및 Single Sign-On(SSO)이 매우 중요한 기능입니다. 권한 관리는 코드 저장소, 프로젝트 및 기타 리소스에 대한 사용자의 액세스를 제어할 수 있으며, Single Sign-On 통합은 보다 편리한 사용자 인증 및 권한 부여 방법을 제공할 수 있습니다. 이 기사에서는 GitLab에서 권한 관리 및 Single Sign-On 통합을 수행하는 방법을 소개합니다. 1. 권한 관리 프로젝트 접근 권한 제어 GitLab에서는 프로젝트를 비공개로 설정할 수 있습니다.

Single Sign-On 기능을 구현하기 위해 안전한 MySQL 테이블 구조를 설계하는 방법은 무엇입니까? 인터넷이 발전하면서 사용자가 다른 애플리케이션에서 다른 계정으로 로그인하는 것이 일반적인 상황이 되었습니다. 사용자 경험과 편의성을 향상시키기 위해 SSO(Single Sign-On) 기술이 탄생했습니다. SSO 기술을 사용하면 사용자는 한 번의 로그인으로 여러 애플리케이션에 액세스할 수 있으므로 계정과 비밀번호를 자주 입력해야 하는 번거로움을 피할 수 있습니다. Single Sign-On 기능 구현을 위한 안전한 MySQL 테이블 구조 설계

Single Sign-On에 PHP 및 OAuth를 사용하는 방법 최신 웹 사이트 및 애플리케이션에서 Single Sign-On(Single Sign-On, SSO라고도 함)은 매우 중요한 기능이 되었습니다. 이를 통해 사용자는 단 한 번의 로그인으로 여러 시스템에 액세스할 수 있으므로 사용자 경험과 작업 효율성이 크게 향상됩니다. 이 기사에서는 PHP 및 OAuth 프로토콜을 사용하여 Single Sign-On을 구현하는 방법을 소개합니다. 1. OAuth 소개 OAuth는 사용자가 타사 애플리케이션 액세스를 승인할 수 있는 개방형 표준 인증 프로토콜입니다.

싱글 사인온(SSO)이란 무엇입니까? 원리는 무엇입니까? 그것을 달성하는 방법? 다음 기사에서는 Single Sign-On을 안내하고 Node를 사용하여 Single Sign-On SSO를 구현하는 방법에 대해 설명합니다. 도움이 되기를 바랍니다.

인터넷의 급속한 발전으로 인해 더욱 편리하고 안전한 사용자 경험을 제공하기 위해 사용자 싱글 사인온(Single Sign-On, SSO) 기능을 구현해야 하는 웹사이트와 애플리케이션이 점점 더 많아지고 있습니다. 이러한 맥락에서 Swoole을 기반으로 한 SSO Single Sign-On 시스템은 점차 업계에서 화제가 되고 있습니다. 이 기사에서는 Swoole을 기반으로 SSO Single Sign-On 시스템을 설계하고 구현하는 방법을 소개합니다. 1. SSO Single Sign-On 시스템 설계 아이디어 SSO Single Sign-On 시스템의 목적은 사용자가 시스템에 로그인할 수 있도록 하는 것입니다.

PHPSSO Single Sign-On의 작동 원리와 기술 메커니즘을 깊이 이해합니다. 인터넷의 급속한 발전과 함께 다양한 웹사이트와 애플리케이션의 수도 증가하고 있습니다. 다양한 웹사이트와 애플리케이션에 접속하려면 사용자는 각각 다른 계정과 비밀번호를 등록해야 하므로 사용자에게 불편과 짜증을 안겨줍니다. 이러한 문제를 해결하기 위해 SSO(Single Sign-On)가 등장했습니다. SSO는 사용자가 성공적으로 로그인한 후 여러 시스템에 원활하게 액세스할 수 있도록 하는 권한 부여 및 인증 시스템입니다. 이 기사에서는 P에 대한 심층적인 이해를 제공합니다.

PHP 기능을 사용하여 사용자 로그인 및 로그아웃에 대한 Single Sign-On 및 권한 확인을 구현하는 방법은 무엇입니까? 인터넷이 발전함에 따라 점점 더 많은 웹사이트나 응용프로그램에서 사용자가 보다 개인화된 서비스를 얻거나 사용자 경험을 향상시키기 위해 로그인을 요구하고 있습니다. 다수의 웹사이트나 애플리케이션에서 각각 별도의 로그인과 권한 확인이 필요한 경우, 이용자에게 불편을 끼칠 수 있습니다. 그래서 SSO(Single Sign-On) 개념이 탄생했습니다. 이 문서에서는 PHP 함수를 사용하여 Single Sign-On 및 권한 확인을 구현하는 방법을 소개하고 관련 정보를 제공합니다.
