每個系統都需要識別操作者的身份,並根據其不同的身份,分配一定的許可權,做一些操作上的限制。隨著系統的增多,若是單獨給每個系統都設計了一套使用者資料和許可權管理的機制,並提供了使用者登入證認,雖可以解決問題,但是將會帶來和使用者賬號管理不方便,使用者資料不統一等等問題。所以,將使用者資料整合起來,進行統一管理很多必要。
本文的目的,將有一定聯絡,擁有統一使用者群的系統進行關聯,統一使用者的登入資料,並提供統一的登入認證入口,這裡稱為 統一認證系統。
根據我們的需求,使用者的體驗一般有兩種:
一、需要訪問某個子系統,則需要在 認證系統上,登陸使用者,在跳轉到需要訪問的頁面;
二、如果在某個子系統登入超時了,在直接進入特定子系統之前,需要重新 登入驗證
1、使用者先與統一登入系統進行互動,使用唯一的帳號密碼進行登入,此時不涉及任何子系統;
2、使用者登入成功後,統一登入系統將信任的應用子系統列表呈現給使用者;
3、使用者根據需要,選擇子系統連線訪問子系統,使用者與子系統的互動開始;
4、由於使用者與子系統此時還沒有建立認證關係,所以子系統將使用者重定向到統一登入系統;
5、統一登入系統驗證使用者的登入資訊,發現使用者已經登入,便將登入資訊插入到資料庫,再將驗證資訊發給使用者,即返回乙個等待頁面;
6、使用者將等待頁面中的驗證資訊提交(自動)到子系統,子系統獲取認證資訊;
7、子系統通過一定的辦法和等待頁面中的驗證資訊進行驗證,並與使用者建立了信任關係;
分兩種方式進行實現,詳細情況如下:
第一種方式:通過md5加密隨機字串,使用了web服務實現了子系統和統一認證系統之間的互動驗證。驗證資訊包含兩部分使用者在統一登入系統的session id和資料庫中的隨機id。當子系統將使用者重定向到統一登入系統的時候,驗證的互動過程開始,詳細步驟如下:
1、統一登入系統獲取使用者的session id和登入名
2、統一登入系統將session id和登入名插入到資料庫,產生乙個隨機的資料庫id
3、將session id和資料庫id結合起來,進行md5加密
4、使用md5密文和資料庫id構建乙個登入等待頁面,返回給使用者
5、使用者將登入等待頁面中的資訊自動提交給子系統
6、子系統通過web服務將md5密文和資料庫id提交回統一登入系統
7、統一登入系統查詢資料庫,並進行驗證
8、統一登入系統返回使用者登入名,並刪除資料庫中的登入記錄。
9、子系統與使用者建立認證關係
圖2. md5隨機加密,web服務實現驗證
第二種方式:通過對認證資訊(登入令牌)進行非對稱加密,一次互動實現驗證。驗證資訊為乙個包含了產生時間的token類。驗證的互動過程同樣是在重定向到統一登入系統的時候開始,詳細步驟如下:
1、構建乙個包含生成時間的token類,將token類序列化
2、使用sha-1,對序列化token編碼進行雜湊,產生驗證碼h
3、將序列化token編碼和驗證碼h結合,使用公鑰加密
4、使用密文構建乙個登入等待頁面,返回給使用者
5、使用者將登入等待頁面中的資訊自動提交給子系統
6、子系統使用私鑰進行解密
7、子系統分離出雜湊驗證碼h和序列化token編碼,並進行sha-1驗證
8、檢查token中的生成時間,判斷是否超時
9、子系統與使用者建立認證關係
統一認證系統(三)
程式設計師在為某個應用系統編寫接入其它應用系統的程式 的時候,常常為了使用者認證大傷腦筋 1 讓終端使用者頻繁登入?似乎是乙個讓使用者很難接受的解決方案。2 在 中內建使用者名稱和密碼?需要隨使用者和密碼的變化經常維護,同時在很多場合下,使用者名稱和密碼對於程式設計師來說可能是不可見的。如何解決這一...
統一認證系統實現要點 資源認證
許可權系統有乙個普遍的需求,即 使用者登入系統後,在瀏覽器位址列直接輸入未經授權的url,應該拒絕其訪問。目前有很多執行緒的許可權框架對這部分進行了封裝,如shiro,但是如果不想引入新框架,保持系統的輕量,該如何做呢?如何配置使用者許可權資訊讓使用者在到達每個操作行為前就判斷使用者是否有進行當前操...
選課系統(一)
今天進行了為期八個小時的測試,試圖完成乙個完整的選課系統,共計五個表的增刪改查,但是最終雖然 已經完成,但是在課程新增過程中,教師工號的傳參消失,導致整個專案的無法進行,已經實現的功能,分別以管理員 教師 學生的不同身份進行登入,並且進入不同的介面,實現了新增教師和學生,並在同時新增賬號,賬號密碼均...