日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Cookie的secure屬性引起循環登錄問題分析及解決方案

來源: 責編: 時間:2024-09-10 09:50:28 113觀看
導讀一、單點登錄簡單介紹1.1 基本概念一個公司內部可能存在多個系統,如果每一個人在使用不同系統的時候都需要重新登錄,那么會做大量系統登錄切換、耗費比較多的精力去管理賬號和密碼,那么有沒有辦法在一個公司內部的所有系

P3Y28資訊網——每日最新資訊28at.com

一、單點登錄簡單介紹

1.1 基本概念

一個公司內部可能存在多個系統,如果每一個人在使用不同系統的時候都需要重新登錄,那么會做大量系統登錄切換、耗費比較多的精力去管理賬號和密碼,那么有沒有辦法在一個公司內部的所有系統只需要一次登錄驗證,后續使用其他系統的時候不用重復登錄就可以直接使用呢,這就是單點登錄要解決的問題。P3Y28資訊網——每日最新資訊28at.com

單點登錄英文全稱 Single Sign On(SSO),允許用戶一次登錄即可訪問多個應用程序或系統,無需為每個應用程序或系統分別輸入認證憑據,便可在其他所有系統中得到授權,無需再次登錄。P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com


P3Y28資訊網——每日最新資訊28at.com

1.2 基本實現原理

圖片P3Y28資訊網——每日最新資訊28at.com


P3Y28資訊網——每日最新資訊28at.com

  • 用戶登錄:用戶在任何一個應用程序或系統中進行身份驗證,并提供他們的憑據。
  • 認證系統驗證:該憑據被發送到認證系統進行驗證。如果憑據有效,則認證系統會為用戶生成數字簽名的令牌(如 Token 或 Ticket)。
  • 令牌分發:認證系統將令牌返回給應用程序或子系統。
  • 應用程序或系統授權:應用程序或系統使用令牌驗證用戶的身份,并授權其訪問相應資源或服務。
  • 跨域系統訪問:用戶可以通過同一令牌訪問多個跨域應用程序或系統,而無需重復進行身份驗證。    

二、循環登錄問題

在某一天我們登錄一個內部系統時,突然出現了循環登錄問題,前端頁面不斷刷新,提示“重定向次數過多問題”。P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

打開前端調試功能, 我們會發現確實存在大量重定向請求的問題:P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

那么平時登錄沒問題的系統為什么突然間就循環登錄呢?并在頁面上提示的解決方法“嘗試刪除您的 Cookie 操作”,按照這個操作以后,確實系統又可以跳轉到登錄頁面正常進行登錄了,這又是什么原因?下面我們將逐一分析。P3Y28資訊網——每日最新資訊28at.com

三、從一次正常登錄流程說起

圖片P3Y28資訊網——每日最新資訊28at.com

上述是一個通用的系統權限管控和單點系統認證的標準流程:P3Y28資訊網——每日最新資訊28at.com

  • 用戶第一次訪問時,在瀏覽器輸入 https://aaa.x.y 回車
  • 權限系統進行攔截,判斷用戶是否登錄,這里主要是通過是否有登錄信息判斷,如果沒有登錄,權限系統會幫我們跳轉到單點登錄系統,彈出用戶登錄頁。
  • 用戶填寫用戶名、密碼,單點登錄系統進行認證后,將登錄狀態寫入 SSO 的 session。
  • SSO 系統登錄完成后會給我們的系統生成一個 Token ,然后跳轉到我們的系統,同時將 Token 作為參數傳遞給我們的系統。
  • 我們系統拿到 Token 后,從后臺向 SSO 發送請求,驗證 Token 是否有效。
  • 驗證通過后,我們系統將記錄頂級域下的 Cookie 信息。
Connection: keep-aliveContent-Length: 0Date: Wed, 25 Oct 2023 08:29:43 GMTLocation: http://aaa.x.y/console/login/auth?redirectUrl=http://aaa.x.y/optrace: xx.xx.xx.xx:80/302 <- -Server: nginxSet-Cookie: token=fakdfajdfdjfdjkfaldfjk'afafjasfasfa; Max-Age=86400; Expires=Thu, 26-Oct-2023 08:29:43 GMT; Domain=x.y; Path=/; HttpOnly

一個公司內部一般情況下只有一個域名,通過二級域名區分不同的系統。比如我們有個域名叫做:x.y ,同時有兩個業務系統分別為:app1.x.y 和 app2.x.y。SSO 登錄以后,可以將 Cookie 的域設置為頂域,即 x.y ,這樣所有子域的系統都可以訪問到頂域的 Cookie ,實現單點登錄功能。P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

四、循環登錄產生的根本原因

那么為什么會不斷循環登錄呢?P3Y28資訊網——每日最新資訊28at.com

(1)從跳轉記錄來看,我們發現重新刷新頁面以后,重定向到了權限系統,并且 Request Headers 中的 Cookie 信息沒有傳對應的 Token 信息。P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

(2)跳轉到權限系統過后,再跳轉到本系統的時候,已經獲取到了對應的 Token 信息,但是在 Set-Cookie 信息的時候,出現了一個警告。P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

警告的具體內容為:P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

大致意思是:這次執行 Set-Cookie 操作被阻止了,原因是這個 Cookie 不是通過安全的連接進行傳輸的,我們這次訪問確實使用了 HTTP 進行,本應該通過設置  Secure 屬性來覆蓋對應的 Cookie。P3Y28資訊網——每日最新資訊28at.com

這里的 Secure 屬性是 Cookie 的一個屬性,Secure 屬性是說如果一個 Cookie 被設置了 Secure = true,那么這個 Cookie 只能用 HTTPS 協議發送給服務器,用 HTTP 協議是不發送的,而我們查看上面標注位置的下一個 Login 請求確實沒有傳 Cookie 信息,從而繼續進行用戶是否登錄校驗,進入死循環過程, 可以看下面的示意圖:P3Y28資訊網——每日最新資訊28at.com

圖片P3Y28資訊網——每日最新資訊28at.com

五、清除瀏覽器緩存的底層原理及解決方法

5.1 清除瀏覽器緩存的底層原理

我們可以看到循環登錄以后,會在瀏覽器頁面上提示 xxx.x.y 重定向次數過多,嘗試清除 Cookie 信息,那清除 Cookie 信息以后,是不是真的就可以解決這個問題呢,我們嘗試著清除瀏覽器緩存,確實可以解決這個問題,那清除瀏覽器緩存來解決循環登錄問題的底層原理是什么呢,其實質就是將 Cookie 刪除,其他域名設置 Cookie 上的 Secure 屬性也就一并刪除了,從而使用 HTTP 域名進入重新登錄流程,可以正常設置 Cookie 信息。P3Y28資訊網——每日最新資訊28at.com

5.2 其他解決辦法

方法一:使用 HTTPS 的方式進行訪問P3Y28資訊網——每日最新資訊28at.com

現實使用中,我們無法控制其他 HTTPS 訪問的具有相同頂級域名的服務不去設置 Cookie 的 Secure 屬性,因而我們在后面使用的過程中還是會遇到這個問題,那么有沒有一種徹底的解決辦法能夠避免這個問題再次出現,我們前面已經分析,之所以我們在開始使用 HTTP 能夠進行正常訪問,然后突然間不能正常訪問了,就是因為已經被 HTTPS 設置了的 Cookie 信息是無法被 HTTP 重新設置的,從而拿不到 Cookie 信息。那么就出現了第一種解決辦法,使用 HTTPS 的方式進行訪問,即使其他服務設置了 Cookie 的 Secure 屬性,用 HTTPS 仍然能夠成功設置 Cookie 和獲取 Cookie。P3Y28資訊網——每日最新資訊28at.com

方法二:在 Cookie 信息中新設置一個 newTokenP3Y28資訊網——每日最新資訊28at.com

以上從 HTTP 轉為 HTTPS 訪問的方法在用戶主動找我們反饋時是能夠告訴它切換為 HTTPS 訪問的,但是如果對于一些沒有主動找我們反饋的用戶,其實是無法解決,可能喪失這個用戶造成用戶流失的情況,那么我們在用戶不進行切換的情況下是否能夠解決這個問題。P3Y28資訊網——每日最新資訊28at.com

同一個公司內部接入的權限系統是一種底層公共能力,為了保證單點登錄,其實用戶信息的讀取都是通過同一個 Cookie 參數(比如叫 Token )讀取的,那么在其他域名設置了公共 Cookie 參數的 Secure 屬性而影響到 HTTP 登錄的時候,我們可以給服務新增加一個 Cookie 參數 newToken 去解決。P3Y28資訊網——每日最新資訊28at.com

六、擴展: Cookie 的端口不隔離性

本文所闡述的問題,出現的背景是有兩個基本前提的:一是為了保證單點登錄,兩個域名屬于同一個頂級域名,權限系統中關于用戶信息的校驗都是通過同一個 Cookie 屬性去讀取的;第二個是 HTTPS 設置了頂級域名的 Cookie 信息的 Secure 屬性,然后使用 HTTP 訪問會導致循環登錄。有些開發者可能會有這樣一個疑問,那就是 HTTPS 我們一般開通的端口是 443 , HTTP 我們一般開通的端口是 8080 ,為啥不從端口上進行區分同一個 Cookie 屬性從而避免干擾呢?P3Y28資訊網——每日最新資訊28at.com

這個在 Cookie 規范(RFC 6265)中有所描述,那就是 Cookie 不提供通過端口進行隔離的,也就是說如果一個 Cookie 可以被一臺服務器上的運行在某一個端口上的一個服務所讀取,那么也可以被這臺服務器上運行在另外一個端口上的服務所讀?。蝗绻粋€ Cookie 可以被一臺服務器上的運行在某一個端口上的一個服務所寫入,那么也可以被這臺服務器上運行在另外一個端口上的服務所寫入。P3Y28資訊網——每日最新資訊28at.com

七、總結

本文從實際開發過程中遇到的循環登錄問題入手,分析了由于設置 Secure 屬性導致使用 HTTP 訪問網頁無法保存 Cookie 信息從而導致循環登錄的根本原因,也給出了其他兩個解決此種問題的方案,對于其他開發人員解決權限系統循環登錄問題具有一定的借鑒意義。P3Y28資訊網——每日最新資訊28at.com

參考資料:P3Y28資訊網——每日最新資訊28at.com

單點登錄實現思路及方案P3Y28資訊網——每日最新資訊28at.com

Sessions don't work in Chrome but do in IEP3Y28資訊網——每日最新資訊28at.com

8.5. Weak ConfidentialityP3Y28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-112767-0.htmlCookie的secure屬性引起循環登錄問題分析及解決方案

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: PyTorch中使用回調和日志記錄來監控模型訓練?

下一篇: 我經常會問應聘者的三個React面試題

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • Mate60手機殼曝光 致敬自己的經典設計

    8月3日消息,今天下午博主數碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 掘力計劃第 20 期:Flutter 混合開發的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發實戰詳解》作者,掘金優秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發的混亂之治。Flutter 基于自研的 Skia 引擎
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 三翼鳥智能家居亮相電博會,讓用戶體驗更真實

    2021電博會在青島國際會展中心開幕中,三翼鳥直接把“家”搬到了現場,成為了展會的一大看點。這也是三翼鳥繼9月9日發布了行業首個一站式定制智慧家平臺后的
Top 主站蜘蛛池模板: 商河县| 沙田区| 镇巴县| 阳西县| 浏阳市| 石嘴山市| 原平市| 灌阳县| 镇赉县| 鄂托克旗| 青阳县| 皋兰县| 建昌县| 革吉县| 高碑店市| 平山县| 汾西县| 扬州市| 乐山市| 玛纳斯县| 台州市| 瑞金市| 克东县| 九江县| 鹿邑县| 连州市| 平顺县| 巴塘县| 广昌县| 盖州市| 德昌县| 商都县| 若尔盖县| 繁昌县| 凤翔县| 凤山县| 崇礼县| 白玉县| 韩城市| 新河县| 郁南县|