Inhaltsverzeichnis
基于Cookie的SSO登录分析和实现,cookiesso登录
什么是SSO?
如何实现?
共享Cookie
ticket验证,我们目前采取的是这种方式
Cookie domain
具体方案
其中几个问题需要重点解决
Heim Backend-Entwicklung PHP-Tutorial 基于Cookie的SSO登录分析和实现,cookiesso登录_PHP教程

基于Cookie的SSO登录分析和实现,cookiesso登录_PHP教程

Jul 12, 2016 am 09:05 AM
单点登录

基于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属性。

为了让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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1068261.htmlTechArticle基于Cookie的SSO登录分析和实现,cookiesso登录 什么是SSO? 现在很多大的互联网公司都会有很多的应用,比如以下是淘宝网的截图: 天猫 聚划...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On Oct 15, 2023 pm 02:49 PM

So erreichen Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On. Einführung: Mit der Popularität von Internetanwendungen sind Benutzer mit einer großen Anzahl von Registrierungs- und Anmeldeprozessen konfrontiert. Um das Benutzererlebnis zu verbessern und die Registrierungs- und Anmeldeintervalle der Benutzer zu verkürzen, haben viele Websites und Anwendungen damit begonnen, die Single-Sign-On-Technologie (Single Sign-On, kurz SSO) einzuführen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP ein effizientes und stabiles SSO-Single-Sign-On implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. SSO-Single-Sign-On-Prinzip SSO-Single-Sign-On ist eine Lösung zur Identitätsauthentifizierung

GitLab-Berechtigungsverwaltung und Tipps zur Single-Sign-On-Integration GitLab-Berechtigungsverwaltung und Tipps zur Single-Sign-On-Integration Oct 21, 2023 am 11:15 AM

Für die Berechtigungsverwaltung und Single-Sign-On-Integrationstipps von GitLab sind spezifische Codebeispiele erforderlich. Übersicht: In GitLab sind Berechtigungsverwaltung und Single-Sign-On (SSO) sehr wichtige Funktionen. Durch die Berechtigungsverwaltung kann der Benutzerzugriff auf Code-Repositorys, Projekte und andere Ressourcen gesteuert werden, während die Single-Sign-On-Integration eine bequemere Benutzerauthentifizierungs- und Autorisierungsmethode bieten kann. In diesem Artikel wird erläutert, wie Sie die Berechtigungsverwaltung und die Single-Sign-On-Integration in GitLab durchführen. 1. Berechtigungsverwaltung Projektzugriffsberechtigungskontrolle In GitLab können Projekte auf privat gesetzt werden

Wie entwerfe ich eine sichere MySQL-Tabellenstruktur zur Implementierung der Single-Sign-On-Funktion? Wie entwerfe ich eine sichere MySQL-Tabellenstruktur zur Implementierung der Single-Sign-On-Funktion? Oct 31, 2023 am 08:33 AM

Wie entwerfe ich eine sichere MySQL-Tabellenstruktur zur Implementierung der Single-Sign-On-Funktion? Mit der Entwicklung des Internets ist es für Benutzer üblich geworden, sich in verschiedenen Anwendungen bei unterschiedlichen Konten anzumelden. Um das Benutzererlebnis und den Komfort zu verbessern, wurde die Single-Sign-On-Technologie (SingleSign-On, kurz SSO) entwickelt. Mit der SSO-Technologie können Benutzer über eine Anmeldung auf mehrere Anwendungen zugreifen und vermeiden so die Mühe, häufig Konten und Passwörter eingeben zu müssen. Entwerfen einer sicheren MySQL-Tabellenstruktur zur Implementierung der Single-Sign-On-Funktion

So führen Sie Single Sign-On mit PHP und OAuth durch So führen Sie Single Sign-On mit PHP und OAuth durch Jul 29, 2023 pm 12:37 PM

So verwenden Sie PHP und OAuth für Single Sign-On In modernen Websites und Anwendungen ist Single Sign-On (SingleSign-On, kurz SSO) zu einer sehr wichtigen Funktion geworden. Es ermöglicht Benutzern den Zugriff auf mehrere Systeme mit nur einer Anmeldung, was die Benutzererfahrung und Arbeitseffizienz erheblich verbessert. In diesem Artikel wird erläutert, wie Sie Single Sign-On mithilfe des PHP- und OAuth-Protokolls implementieren. 1. Einführung in OAuth OAuth ist ein offenes Standardautorisierungsprotokoll, das es Benutzern ermöglicht, den Zugriff auf Anwendungen Dritter zu autorisieren.

Lassen Sie uns darüber sprechen, wie Sie Single Sign-On (SSO) basierend auf Node implementieren Lassen Sie uns darüber sprechen, wie Sie Single Sign-On (SSO) basierend auf Node implementieren Dec 06, 2022 pm 07:49 PM

Was ist Single Sign-On? Was ist das Prinzip? Wie erreicht man es? Der folgende Artikel führt Sie durch Single Sign-On und erläutert, wie Sie Node zur Implementierung von Single Sign-On SSO verwenden. Ich hoffe, er ist hilfreich für Sie!

Entwurfspraxis eines SSO-Single-Sign-On-Systems basierend auf Swoole Entwurfspraxis eines SSO-Single-Sign-On-Systems basierend auf Swoole Jun 14, 2023 pm 04:08 PM

Mit der rasanten Entwicklung des Internets müssen immer mehr Websites und Anwendungen Single-Sign-On-Funktionen (Single Sign-On, SSO) für Benutzer implementieren, um ein komfortableres und sichereres Benutzererlebnis zu bieten. In diesem Zusammenhang ist das auf Swoole basierende SSO-Single-Sign-On-System nach und nach zu einem heißen Thema in der Branche geworden. In diesem Artikel wird erläutert, wie Sie ein SSO-Single-Sign-On-System auf Basis von Swoole entwerfen und implementieren. 1. Designidee des SSO-Single-Sign-On-Systems Der Zweck des SSO-Single-Sign-On-Systems besteht darin, Benutzern die Anmeldung bei einem System zu ermöglichen.

Vertiefendes Verständnis des Funktionsprinzips und des technischen Mechanismus von PHP SSO Single Sign-On Vertiefendes Verständnis des Funktionsprinzips und des technischen Mechanismus von PHP SSO Single Sign-On Oct 15, 2023 am 09:19 AM

Verstehen Sie das Funktionsprinzip und den technischen Mechanismus des PHPSSO Single Sign-On genau. Mit der rasanten Entwicklung des Internets nimmt auch die Anzahl verschiedener Websites und Anwendungen zu. Um auf verschiedene Websites und Anwendungen zuzugreifen, müssen Benutzer unterschiedliche Konten bzw. Passwörter registrieren, was für Benutzer Unannehmlichkeiten und Ärger mit sich bringt. Um dieses Problem zu lösen, wurde Single Sign-On (SSO) entwickelt. SSO ist ein Autorisierungs- und Authentifizierungssystem, das Benutzern nach erfolgreicher Anmeldung den nahtlosen Zugriff auf mehrere Systeme ermöglicht. Dieser Artikel vermittelt ein tiefgreifendes Verständnis von P

Wie verwende ich PHP-Funktionen, um Single Sign-On und Berechtigungsüberprüfung für die Benutzeranmeldung und -abmeldung zu implementieren? Wie verwende ich PHP-Funktionen, um Single Sign-On und Berechtigungsüberprüfung für die Benutzeranmeldung und -abmeldung zu implementieren? Jul 26, 2023 pm 07:02 PM

Wie verwende ich PHP-Funktionen, um Single Sign-On und Berechtigungsüberprüfung für die Benutzeranmeldung und -abmeldung zu implementieren? Mit der Entwicklung des Internets erfordern immer mehr Websites oder Anwendungen eine Anmeldung der Benutzer, um personalisiertere Dienste zu erhalten oder die Benutzererfahrung zu verbessern. Wenn bei mehreren Websites oder Anwendungen jeweils eine separate Anmeldung und Berechtigungsüberprüfung erforderlich ist, führt dies zu Unannehmlichkeiten für die Benutzer. Aus diesem Grund entstand das Konzept des Single Sign-On (SSO). In diesem Artikel wird erläutert, wie Sie mithilfe von PHP-Funktionen Single Sign-On und Berechtigungsüberprüfung implementieren und relevante Informationen bereitstellen

See all articles