單一登入是什麼意思?
單一登入SSO是指在多個應用系統中,使用者只需要登入一次就可以存取所有互信的應用系統,是企業業務整合的解決方案之一,其優點:1、提高使用者的效率;2、提高開發人員的效率;3、簡化管理。
很早期的公司,一家公司可能只有一個Server,慢慢的Server開始變多了。每個Server都要進行註冊登錄,退出的時候又要一個個退出。使用者體驗很不好!你可以想像一下,上豆瓣 要登入豆瓣FM、豆瓣讀書、豆瓣電影、豆瓣日記......真的會讓人崩潰的。我們想要另一種登入體驗:一家企業下的服務只要一次註冊,登入的時候只要一次登錄,退出的時候只要一次退出。怎麼做?
一次註冊。一次註冊不難,想一下是不是只要Server之間同步使用者資訊就行了?可以,但這樣描述不太完整,後續講用戶註冊的時候詳細說。實際上使用者資訊的管理才是SSO真正的困難,只是作為初學者,我們的困難在於實現SSO的技術!我們先討論實現手段。
一次登入與一次登出。回頭看看普通商場的故事,什麼東西才是保持登入狀態關鍵的東西?記錄器(session)?那種叫做cookie的紙張?寫在紙張上的ID? 是session裡面記錄的資訊跟那個ID,cookie不只是記錄ID的工具而已。客戶端持有ID,服務端持有session,兩者一起用來保持登入狀態。客戶端需要用ID來當作憑證,而服務端需要用session來驗證ID的有效性(ID可能過期、可能根本就是偽造的找不到對應的資訊、ID下對應的客戶端還沒有進行登入驗證等)。但session這東西一開始是每個server自己獨有的,豆瓣FM有自己的session、豆瓣讀書有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實現一次登入一次退出,只需要想辦法讓各個server的共用一個session的信息,讓客戶端在各個網域下都能持有這個ID就好了。再進一步講,只要各個server拿到同一個ID,都能有辦法檢驗出ID的有效性、並且能得到ID對應的用戶資訊就行了,也就是能檢驗ID;
##單一登入實作方法
server端以server群如何產生、驗證ID的方式大致分為兩種:「共享Cookie」這個就是上面提到的共享session的方式,我倒覺得叫「共享session」來好一點,本質上cookie只是儲存session-id的介質,session-id也可以放在每一個請求的url裡。據說這種方式不安全,我沒去細究,哪位大神可以推薦下相關的資料,我後期補上。其實也是,畢竟session這項機制一開始就是一個server一個session的,把session拿出來讓所有server共享確實有點奇怪。 SSO-Token方式因為共享session的方式不安全,所以我們不再以session-id作為身分的識別。我們另外產生一種標識,把它取名SSO-Token(或Ticket),這種標識是整個server群唯一的,並且所有server群都能驗證這個token,同時能拿到token背後代表的用戶的信息。我們要討論的也是這種方式,一會上具體流程圖。 瀏覽器端單一登入還有非常關鍵的一步,這一步跟server端驗證token的方式無關,用最早的「共享session」的方式還是現在的「token 」方式,身分識別到了瀏覽器端都要面臨這樣的一個問題:使用者登入成功拿到token(或者是session-id)後怎麼讓瀏覽器儲存和分享到其它網域下?同域名很簡單,把token存在cookie裡,把cookie的路徑設定成頂級網域下,讓所有子網域都能讀取cookie中的token。這就是共享cookie的方式(這才叫共享Cookie嘛,上面那個應該叫共享session)。例如:Google公司,google.com是他的頂級域名,信箱服務的mail.google.com和地圖服務的map.google.com都是它的子網域。但是,跨域的時候怎麼辦?谷歌公司還有一個域名,youtube.com,提供視訊服務 。 推薦教學:《PHP》
#
以上是單一登入是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用PHP實現高效穩定的SSO單一登入引言:隨著網路應用的普及,使用者面臨大量的註冊和登入流程。為了提高使用者體驗,並減少使用者的註冊和登入間隔,許多網站和應用程式開始採用單一登入(SingleSign-On,簡稱SSO)技術。本文將介紹如何使用PHP實現高效穩定的SSO單一登錄,並提供具體的程式碼範例。一、SSO單一登入原理SSO單一登入是一種身分認證的解決

PHP中的OAuth:建立一個多平台SSO解決方案隨著互聯網的快速發展,人們在多個平台中使用各種應用程式已成為常態。這就帶來了一個問題:如何實現不同平台間的單一登入(SSO)? OAuth(開放授權)成為了解決這個問題的優秀選擇。 OAuth是一個開放標準,允許使用者在不共享他們的憑證的情況下,授權第三方應用程式存取他們的網路資源。 OAuth可以用來建構一個多

PHPSSO單一登入的安全性與漏洞防範一、介紹隨著網路的發展,越來越多的網站實現了使用者驗證功能。但是,使用者每次登入不同的網站都需要輸入帳號和密碼,既不方便又容易遺忘。為了解決這個問題,單一登入(SingleSign-On,簡稱SSO)應運而生。 SSO是解決多個網站使用者身分認證的解決方案,使用者只需要登入一次,即可在其他網站上實現無縫存取。二、PH

什麼是單一登入?原理是什麼?怎麼實現?以下這篇文章帶大家了解單一登錄,並聊聊使用Node實作單一登入SSO的方法,希望對大家有幫助!

隨著網路的高速發展,越來越多的網站和應用程式需要實現使用者單一登入(SingleSign-On,SSO)功能,以提供更便利和安全的使用者體驗。在此背景下,基於Swoole的SSO單一登入系統逐漸成為了業界關注的熱點。本文將為大家介紹如何設計實作一個基於Swoole的SSO單一登入系統。一、SSO單一登入系統設計想法SSO單一登入系統目的是實現使用者在一個系統中登

一、JAAS概述JavaJAAS(JavaAuthenticationandAuthorizationService)是一個用於多系統單一登入(SSO)整合、基於角色的存取控制(RBAC)和授權管理的框架。 JAAS允許應用程式保護對資料或資源的訪問,並定義存取控制機制。二、JAAS最新最佳實踐1.使用JAAS進行身份驗證JAAS提供兩種主要的身份驗證方法:基於令牌的身份驗證:此方法使用令牌(例如,使用者名稱和密碼)來驗證使用者身份。基於認證的身份驗證:此方法使用認證(例如,數位憑證)來驗證使用者身分。 2

深入理解PHPSSO單一登入的工作原理和技術機制隨著網路的快速發展,各種網站和應用程式的數量也日益增加。使用者為了造訪不同的網站和應用,需要分別註冊不同的帳號和密碼,給使用者帶來了不便和麻煩。為了解決這個問題,單一登入(SingleSign-On,SSO)應運而生。 SSO是一種授權認證系統,在使用者登入成功後,可以實現使用者在多個系統中的無縫存取。本文將深入理解P

PHPSSO單一登入在多系統整合中的實際應用案例引言:隨著網際網路的快速發展和使用者需求的成長,越來越多的網站和應用程式需要實現使用者單一登入(SSO)功能。 PHP作為一種廣泛應用的伺服器端腳本語言,具有靈活、簡單且易於整合的特點,成為了許多開發者選擇的首選。本文將介紹一個基於PHP的單一登入解決方案,並透過實際案例來展示其在多系統整合中的應用。一、什麼是單點登