在web.config中配置指定到自己寫的乙個dll,這個類用來獲取令牌儲存本地cookie和建立forms認證。(主站的令牌存在在主站的乙個資料庫表中,用來作為登陸的使用者日誌)
這個dll首先會生成乙個guid用來到主站點獲取金鑰加密的字尾。根據返回回來的金鑰呼叫主站點的webserver的方法,根據這個金鑰引數返回使用者判斷是否為空,如果為空就跳轉登入,反之跳轉到指定頁面中。(這裡dll生成的guid只是用來主站和子站點的乙個安全契約,而主站獲取過來的guid才作為webserver的查詢),在通過返回過來的使用者名稱呼叫webserver查詢這個使用者名稱的角色給到forms cookies
主站登入會根據跳轉過來的金鑰引數值,對cooke進行賦值。
使用者的資訊會再登陸的時候根據cookie儲存的key進行對錶中的所有使用者記錄查詢出來,放入system.collections.objectmodel.keyedcollection中進行存放。然後當你進入頁面的時候,只需要根據cookie中存放的key對keyedcollection查詢就行了,(此處使用單列模式,這樣就不需要網資料庫查詢了,減少資料庫壓力)如果有就返回name,沒有就返回"";(或者登陸的時候看看keyedcollection裡面是否有這個使用者,如果有就更改一下過期時間,反之就儲存一條到keyedcollection裡面)。
主站退出時會對keyedcollection集合進行刪除,然後退出forms認證,當例項一條使用者進入集合時,會做個定時器,後台開啟乙個執行緒,每隔4個小時檢視集合中的使用者是否過期,過期就進行從集合中刪除。
1、本地生成乙個guid並儲存cookie,如果沒登陸就把這個帶到主站點,然後主站點生成乙個cookie的token+傳過來的guid進行拼接
2、如果登陸成功將token的值儲存到redis快取中,在redis已token做乙個主鍵物件記錄使用者資訊,
3、每次登陸通過token加使用者雙方約定契約來進行呼叫主站點的使用者資訊
4、當b站點訪問的時候,直接返回主站cookie的token,流程和前面一樣
basetoken 6aa76595cb2144d8a4619b4c2d7f0b8c 首先本地需要弄乙個隨機guid,以區分是本地請求過去的,然後在將主站生成的金鑰進行拼接 newtoken+basetoken返回給客戶端
temptoken =newtoken+basetoken 他是用來記錄可能第一次根據token沒有獲取到使用者資訊,然後為了第二次請求
remotetoken =主站返回的金鑰=newtoken+basetoken
SSO與Apollo接入SSO思路
一般接入sso的思路如下 1.sso會提供乙個jar包,需要配置乙個filter 2.filter會攔截所有請求,檢查是否已經登入 3.如果沒有登入,那麼就會跳轉到sso登入頁面 4.在sso登入頁面登入成功後,會跳轉回apollo的頁面,帶上認證的資訊 5.在此進入sso的filter,校驗認證資...
OAuth2與sso的結合思路
首次登入 1 使用者訪問a系統,a系統檢查自身的session 第三方系統概念,非統一認證中心概念 發現此人未登入,轉到統一認證中心登入檢查介面。2 統一認證中心檢查介面,判斷下sso domain下是否存在 access token,沒有表示需要進行首次登入驗證。3 跳轉到登入頁面,要求輸入使用者...
SSO技術,SSO是什麼?
sso英文全稱single sign on,單點登入。sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同乙個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。sso技術實現機制 當使用者第一次訪問應用系統1...