一、什麼是單點登錄
單點登錄(Single Sign On,SSO)指的是用戶只需要登錄一次,在多個應用系統中使用同一個賬號和密碼登錄,而且在所有系統中都可以使用,而不需要在每個系統中都進行登錄操作。
舉個例子,你在電商網站A中登錄了自己的賬號,然後又進入了另外一個電商網站B,你發現你並不需要再次進行登錄,因為這兩個網站共用了相同的用戶信息。
二、單點登錄的應用場景
單點登錄的應用場景非常廣泛,對於一些需要用戶身份驗證的網站來說,SSO能夠大大減少用戶的輸入次數和密碼的多次檢驗,提高用戶體驗,減少用戶的負擔。
下面列舉一些常見的應用場景:
1.企業內部
一個企業內部可能會有多個系統,如OA、CRM、ERP等,員工需要頻繁地在多個系統中進行切換,如果在每個系統中都要進行一次登錄操作,那就會很麻煩,單點登錄能夠解決這個問題,只需要登錄一次即可。
2.門戶網站
門戶網站通常會整合多個Web應用,如郵箱、網盤、社交、新聞資訊等,如果用戶需要在每個應用中都進行登錄操作,那會很麻煩,而且很容易忘記某個應用的密碼,單點登錄能夠讓用戶在門戶網站中登錄一次,就可以訪問所有的Web應用。
3.互聯網產品
一些互聯網產品,如金融、醫療、教育等,需要用戶進行身份認證和信息管理,如果用戶需要在每個產品中都進行登錄,那就容易疲於奔命,單點登錄能夠簡化流程,減少用戶的負擔。
三、單點登錄的原理
要實現單點登錄,首先需要一個認證中心,負責管理用戶的身份信息和權限信息。用戶只需要登錄一次認證中心,就能夠獲得一些加密的票據,這些票據能夠在其他應用系統中被識別和認證,從而實現單點登錄。
四、實現單點登錄的方法
1.Cookies共享
Cookies是指網站服務器存放在用戶本地瀏覽器上的數據,它能夠記錄用戶的登錄信息和訪問狀態,下次用戶再訪問網站時,瀏覽器會攜帶這些數據進行訪問,從而實現自動登錄。如果多個應用系統在同一域名下,那麼它們可以共享Cookies,實現單點登錄。
<!-- 設置Cookies -->
document.cookie = "username=admin;password=123456;path=/"
<!-- 獲取Cookies -->
var cookies = document.cookie.split(";")
for (var i=0; i<cookies.length; i++) {
var cookie = cookies[i].split("=")
console.log(cookie[0], cookie[1])
}
2.Token認證
Token是指一種加密的票據,它包含用戶身份信息和權限信息,服務器將Token存放在客戶端,下次訪問時,客戶端會將Token發送給服務器進行認證。多個應用系統可以共用同一份Token,實現單點登錄。
<!-- 生成Token -->
var token = CryptoJS.AES.encrypt("username=admin;password=123456", "secret")
<!-- 存儲Token -->
localStorage.setItem("token", token)
<!-- 獲取Token -->
var token = localStorage.getItem("token")
var decryptedData = CryptoJS.AES.decrypt(token, "secret").toString(CryptoJS.enc.Utf8)
console.log(decryptedData)
3.集成SAML協議
Security Assertion Markup Language(SAML)是一種XML標準,用於身份認證和授權管理。它通過XML格式化的消息交換,實現單點登錄和安全跨域訪問。通過集成SAML協議,可以使網站具有單點登錄的能力。
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_bf2e7369-5db8-49b2-bfe1-a90cc0aa126e"
Version="2.0"
IssueInstant="2015-03-29T09:01:00Z"
Destination="https://idp.example.org/SAML2/SSO/Redirect"
AssertionConsumerServiceURL="https://sp.example.com/SAML2/SSO/POST">
<saml:Issuer>https://sp.example.com/metadata</saml:Issuer>
</samlp:AuthnRequest>
五、單點登錄的優點
1.減少用戶的負擔
用戶只需要登錄一次,就可以訪問多個應用系統,在切換應用系統時不需要再次輸入用戶名和密碼,大大減少了用戶的負擔。
2.提高用戶體驗
單點登錄能夠讓用戶快速便捷地訪問多個應用系統,提高了用戶的體驗和效率,縮短了用戶的等待時間,降低了用戶的流失率。
3.降低開發成本
單點登錄能夠在多個應用系統中共用同一份身份信息,減少了開發和維護成本,提高了系統的整體性能和可維護性。
六、單點登錄的缺點
1.安全風險
如果認證中心被攻擊或者泄漏了票據信息,那麼所有的應用系統都會受到威脅,造成很大的安全風險。
2.技術成本
實現單點登錄需要一定的技術儲備和成本投入,對於一些小型企業來說可能會有一定的難度。
3.限制性
單點登錄只適用於需要進行身份驗證的應用場景,對於一些不需要用戶身份驗證的應用來說,單點登錄就沒有什麼作用。
原創文章,作者:IUKDZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372687.html