Sina SSO 登陸流程分析
近日研究了 Sina CAS 的登陸過程,發現其實 sina 的 sso 實現了 yale-CAS 且增加一丁點新的東西,而基本認證流程互動流程仍不變。其獨創的一點是實現了 Ajax 單點登陸,算是比較牛隻。實作原理是 iframe+ javaScript 回呼函數。
一,初級 SSO
初級的 SSO ,就是在同一個頂級域名下,透過種入頂級域名的 Cookie ,來實現統一登陸。例如:
單點登陸網址: sso.xxx.com/login.jsp
應用 1 : web1.xxx.com/login.jsp
應用 2 : web. : web3.xxx.com/login.jsp
登陸流程:
情況一:(使用者從未登陸)
1, 使用者造訪 web1.xxx.com/login.jsp , web1 使用者造訪 web1.xxx.com/login.jsp , web1 重定向至 sso.xxx. com/login.jsp
2, 用戶輸入驗證,成功。 sso.xxx.com 種入 .xxx.com 域 Cookie 的 tokenid ,重新導向至 web1.xxx.com/login.jsp, web1.xxx.com 造訪 .xxx.com 域 Cookie 的 tokenxxx.com 造訪 .xxx.com 域 Cookie 的 tokenid 完成。
情況二:(使用者已經登陸)直接登陸。
二, Sina SSO
Sina 實現了跨網域的統一登陸,本質也是基於 Cookie 的。如果使用者停用 Cookie ,那麼無論如何也是登陸不了的。例如: Sina SSO 伺服器是 login.sina.com.cn/sso/login.php
,微博登陸位址為 weibo.com/login.php 。透過回呼函數和 iframe 實現了跨一級網域的登陸。
認證流程具體流程:這裡只介紹使用者從未登陸。
1, 用戶進入 weibo.com/login.php
2, 使用者輸入使用者名稱。輸入完畢後,當使用者名稱輸入框焦點失去的時候,頁碼透過 ajax 向伺服器login.sina.com.cn/sso/prelogin.php 傳送請求,參數為 user (剛輸入的使用者名稱)。服務回傳 server time 和nonce 認證,並透過回呼函數寫入到 javascript 變數。
3, 使用者輸入密碼,點選登陸,頁面 POST 請求(注意是 ajax 請求,並非 login.php 發送的 ),
login.sina.com.cn/ssogin/login.php? (v1.3.12) ,請求的發起的頁面是 weibo.com/login.php 中的一個看不見 iframe 頁面,參數為第二步得到的 server time 和 nonce ,已被使用者名稱和加密的密碼。回種入Cookie tgt 在 login.sina.com.cn 下。同時修改 iframe 地址為 weibo.com/ajaxlogin.php?ticket=XXXXXX, 注意ticket 非常重要,這是使用者登陸和服務的憑證。
4, iframe 訪問 weibo.com/ajaxlogin.php?ticket=XXXXXX ,使用者登陸,返回種入 cookie 在 .weibo.com 下,並記錄使用者登陸資訊。
5, 透過 js 再次造訪 weibo.com/login.php ,因為 cookie 已寫入,登陸成功,伺服器傳送 302 ,重新導向至使用者主頁。 Weibo.com/userid 。
6, 至此,登陸程序完成。
重點:互動過程與密碼加密演算法分析。

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

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