中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決SSO單點登錄重定向

發布時間:2021-10-20 10:23:13 來源:億速云 閱讀:266 作者:iii 欄目:web開發

這篇文章主要講解了“如何解決SSO單點登錄重定向”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何解決SSO單點登錄重定向”吧!

當我們寫好SSO單點登錄服務的代碼后,通過調用接口方式驗證,流程看似正常,但開始與前端聯調就出現問題了。

流程是這樣的:前端在首頁使用ajax訪問后端獲取菜單或者用戶信息的接口,以觸發登錄校驗,如果未登錄則重定向到SSO登錄頁面。

但這一步就出問題了,原因是ajax無法攔截302處理。當ajax接收到302響應時,看起來就像是ajax直接向重定向鏈接發起請求,而不是讓瀏覽器重定向,結果啥事也沒干。

關于ajax無法攔截302處理的原因,筆者從網上找到的解釋如下。

服務器將302響應發給瀏覽器時,瀏覽器并不是直接進行ajax回調處理,而是先執行302重定向,從響應頭中讀取Location信息,然后向Location中的Url發出請求,在收到這個請求的響應后才會進行ajax回調處理。

大致流程:ajax -> browser -> server -> 302 -> browser(redirect) ->  server -> browser -> ajax callback。

原本是為了讓前端以最少的改動接入SSO,但因為筆者對前端的了解較淺,才犯了這樣的錯誤。

既然ajax無法處理302,那也只能修改流程,讓前端主動發起重定向了。

流程修改后,當后端驗證用戶未登錄或登錄過期時響應401狀態碼,同時body給出重定向鏈接,而前端需要全局攔截401錯誤,從響應body獲取鏈接并讓瀏覽器重定向到指定鏈接,該鏈接就是由后端拼接好的跳轉到SSO登錄的鏈接。

如何解決SSO單點登錄重定向

最后還有一個cookie問題。由于本地測試,前端將請求轉發給部署到測試環境的后端,前端的域名為127.0.0.1,后端測試環境域名為xxx.  com,導致本地測試跳轉到SSO登錄成功并返回后,前端向后端發起請求依然響應401。

原因在上篇已經描述過了,就是因為域名不同,前端使用ajax發起請求,瀏覽器并不會將xxx.com域名下的cookie帶上,只會帶上127.0.0.1域名下的cookie。

解決該問題只需要修改傳給SSO登錄成功后重定向的checkToken接口的域名為前端本地測試的域名,由前端將請求轉發給后端,或者在nginx配置將此接口的請求轉發給后端處理,只有這樣session才能保持一致。

除此之外,跨協議無法重訂向。也就是說,sso部署在測試環境域名為https://sso.xx.com,而接入sso的服務在本地測試域名為http://127.0.0.1,想要從https://sso.xx.com登錄成功后重定向回http://127.0.0.1是不支持的,原因是跨協議重定向了,由https協議變成了http協議。

從這些事情可以看出,實戰很重要!即便理解了流程、實現原理,但不動手實戰就學不到細節,無法從各種踩坑過程中成長。

感謝各位的閱讀,以上就是“如何解決SSO單點登錄重定向”的內容了,經過本文的學習后,相信大家對如何解決SSO單點登錄重定向這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sso
AI

剑河县| 定远县| 会宁县| 泊头市| 嘉定区| 晋州市| 阿瓦提县| 治县。| 永春县| 天台县| 白银市| 沐川县| 沁源县| 东安县| 安西县| 右玉县| 桂林市| 河西区| 雷州市| 申扎县| 阿勒泰市| 兰溪市| 乌海市| 黄山市| 兴国县| 宁国市| 海安县| 宝坻区| 富川| 双桥区| 上虞市| 中西区| 章丘市| 兰西县| 临潭县| 香格里拉县| 永修县| 丹寨县| 内黄县| 堆龙德庆县| 新干县|