<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    http://www.cnblogs.com/jillzhang/archive/2008/02/01/1061212.html




      先說幾句廢話,自我感覺此方案還不錯,至少解決了安全性的問題,也實現了統一登出,能跨平臺,跨服務期,跨域名,當然需要相應的聯盟站點的支持,但從原理上絕對能跨平臺。設計和具體實現的描述比較長,今天先介紹一部分


    1引言

    1.1 編寫目的

    詳細說明單點登錄組件(SSO)的設計思想和實現方法,是日后該組件維護和擴展工作的基本依據文檔。預期讀者是要實現單點登錄(SSO)系統的系統設計人員,系統開發人員,系統維護人員。

    1.2 背景

    說明:

    1. 待開發軟件系統的名稱;jillzhang的SSO組件
    2. 本項目的任務提出者為jillzhang、開發者為jillzhang、用戶為有用戶整合需求平臺的開發和設計人員。

    1.3 定義

    SSO是Single Sign On的縮寫,該技術主要用于用戶整合。
    認證中心:認證中心是用戶注冊,成員站點管理,用戶登錄,驗證登錄信息,保存登錄 信息,頒發登錄認證的中心站點。 
    成員站點: 成員站點是遵從認證中心規則,享用認證中心統一用戶的站點。  
    注冊站點:如果想成為成員站點,必須先在認證中心進行站點登記,登記后,認證中心會保存注冊站點的配置信息,并將該配置信息發給注冊站點。注冊站點也需保存這些配置信息,供日后與認證中心交互時候使用。  
    聯盟用戶:指在認證中心注冊的用戶,這些用戶能被所有的成員站點所共享。
    登錄請求:指成員站點向認證中心發出的帶有站點配置的用戶登錄請求信息。
    登出請求:只用戶向認證中心發出的要求退出登錄的請求。  
    登錄請求驗證:指的是認證中心根據存儲的站點信息對成員站點的登錄請求信息進行來 源和真實性的驗證。
    登出請求驗證:指認證中心在接受來自成員站點的登出請求的時候,對請求的來源和真實性進行的驗證
    登錄答復:指認證中心對經過驗證的登錄請求作出的答復信息。該答復包含用戶的登錄信息。
    在線聯盟用戶數:指的是在成員站點中,在線的聯盟用戶數量。  
    在線聯盟用戶列表:指的是在成員站點中,在線的聯盟用戶的列表信息。 
    登錄站點清單:是由認證中心維護的用戶的登錄站點信息,當用戶注銷的時候,會遍歷此清單,逐個登出。

    1.4 參考資料

    本組件的設計和實現參考了下面的系統和書籍

    1. 《數字簽名技術原理及技術》

    2 程序系統的結構

    本組件包括下面幾個應用接口,分別如下:

    1. ISite:ISite是用于描述和操作成員站點的接口
    2. IUser : IUser是用于描述和操作聯盟用戶的接口
    3. IServer:IServer是認證中心處理登錄請求和登出請求的接口
    4. IClient: IClient是成員站點發出登錄請求和處理登錄答復的接口
    5. IUserLoginList:IUserLoginList是描述和操作用戶登錄站點清單的接口
    6. ILoginRequest:是記錄和操作成員站點發送登錄請求的接口。
    7. ILoginRequestContainer:用于保存和維護登錄請求列表的接口
    8. IUserStateContainer:是聯盟站點中保存用聯盟用戶登錄信息的接口。

    它們的定義如下:

    組件的工作流程描述如下:

    1. 第一步,首先注冊聯盟站點,注冊聯盟站點用到接口ISite
    2. 第二步:注冊好聯盟站點之后,將認證中心產生的站點配置信息(包括站點編號,站點公鑰,站點私鑰,認證中心的登錄地址,認證中心登出地址)存儲到聯盟站點本地。
    3. 在認證中心上注冊一新用戶,注冊用戶需要使用IUser接口
    4. 在聯盟站點對認證中心發出登錄請求
    5. 認證中心驗證登錄請求
    6. 在認證中心進行登錄
    7. 登錄成功后,保存登錄票據,認證中心對聯盟站點發送登錄答復,并將此次登錄記錄到登錄站點清單
    8. 聯盟站點接收到登錄答復后,先進性驗證,正確后,根據登錄答復中的信息產生用戶登錄票據,并且更新聯盟用戶登錄數和登錄列表
    9. 在聯盟站點中發出登出請求
    10. 認證中心驗證登出請求,正確的話,銷毀認證中心用戶登錄票據,通過用戶的登錄站點清單,逐個調用聯盟站點的登出頁面
    11. 在認證中心回調聯盟站點的登出頁的時候,聯盟站點會在登出頁中銷毀各個的登錄票據,并更新在線用戶數和用戶列表。

     

    3 ISite接口設計說明 

    3.1 接口描述

    ISite接口包括7個屬性和2個方法,分別用于在認證中心用于描述和操作站點的配置

    信息。














    其中,各個屬性的含義如下

    屬性名稱

    類型

    含義

    SiteID

    string

    站點編號,用于表示站點的唯一性。

    HomePage

    string

    當登錄請求中未提供來源網址項的時候,登錄答復發送的地址

    LogOutUrl

    string

    在進行統一登出的時候,回調的聯盟站點頁面地址,這個頁面會負責銷毀本站的登錄票據信息。

    PublicKey

    string

    用于數據交換時加密或簽名用的公鑰

    PublicAndPrivateKey

    string

    用于數據交換時加密或簽名用的私鑰

    FromUrlKey

    string

    用于指示聯盟站點在發送登錄請求和認證站點進行請求驗證的時候來源網址存儲位置。

    UidField

    string

    用于指示聯盟站點在發送登錄請求和認證站點進行請求驗證的時候用戶信息的存儲位置。

    還包括兩個方法,分別為:

    方法名

    含義和作用

    Add

    添加新的聯盟站點。

    Validate

    驗證聯盟對象是否已經存在

    3.2功能

    該接口能在認證中心完成新聯盟站點添加操作,添加之前可以驗證站點是否存在。

    3.3 默認實現

    在SSO組件中,已經實現了一個默認的ISite對象。為DefaultServer/ DefaultSite.cs,它將放置在認證中心根目錄下的sites.config文件作為存儲介質,通過Add方法添加新聯盟站點后的效果為:附件中的site.config文件,可自行下載文件后,看其結構。

     

     

    4 IUser接口設計說明

    4.1接口描述

    IUser接口包括2個屬性和2個方法,用于在認證中心端描和操作述聯盟用戶。

    其中,各個屬性的含義如下

    屬性名稱

    類型

    含義

    Uid

    string

    用戶編號,是用戶的標識

    Pwd

    string

    用戶密碼

    還包括兩個方法,分別為:

    方法名

    含義和作用

    Validate

    驗證用戶是否存在

    Register

    添加新用戶

    4.2功能

    該接口能在認證中心完成新聯用戶添加操作,添加之前可以驗證用戶是否存在。

    4.3 默認實現

    在SSO組件中,已經實現了一個默認的IUser對象。為DefaultServer/ DefaultUser.cs,它將放置在認證中心根目錄下的users.config文件作為存儲介質,通過Register方法添加新聯盟用戶的效果為:附件中的users.config文件,可自行下載文件后,看其結構。

     

     

    5 IUserLoginList接口設計說明

    5.1接口描述

    IUserLoginList接口包括3個方法,用于在認證中心描述和操作用戶登錄的站點清單。

    還包括三個方法,分別為:

    方法名

    含義和作用

    Add

    驗證用戶是否存在

    GetLoginSites

    獲取用戶的登錄站點清單

    DeleteUser

    刪除用戶的登錄站點清單數據

    5.2功能

    該接口在認證中心用于用戶記錄和維護用戶登錄的站點清單  

    5.3 默認實現

    在SSO組件中,已經實現了一個默認的IUserLoginList對象。為DefaultServer/ UserLoginLog.cs,它通過一個Collection對象來實現用戶登錄站點清單的維護工作。

     

     

    6 IServer接口設計說明

    6.1接口描述

    IServer接口包括2個屬性和5個方法,用于接收,驗證登錄請求,發送登錄答復,接搜,驗證登出請求,創建本地登錄票據,維護用戶登錄清單。

    兩個屬性為:

    屬性名稱

    類型

    含義

    Site

    ISite

    當前上下文處理請求和答復的站點對象

    Uid

    string

    當前處理的上下文中的用戶編號

     

    還包括三個方法,分別為:

    方法名

    含義和作用

    CheckUser

    驗證用戶對象是否存在

    CheckExistToken

    驗證登錄票據已經存在

    SaveToken

    在認證中心本地保存登錄票據

    Jump

    通過url跳轉,發送登錄答復

    LogOut

    統一登出。

    6.2功能

    該接口在認證中心,用于接收,驗證登錄請求,發送登錄答復,接搜,驗證登出請求,創建本地登錄票據,維護用戶登錄清單

    6.3 默認實現

    在SSO組件中,已經實現了一個默認的IServer對象。為DefaultServer/ LoginRequest.cs。

     

     

    7 ILoginRequest接口設計說明

    7.1接口描述

    ILoginRequest接口包括2個屬性,用于記錄和描述聯盟站點的登錄請求,這些信息在發出登錄請求的時候創建,在收到登錄答復的時候銷毀。用于確保登錄答復的不可復用性。

    兩個屬性為:

    屬性名稱

    類型

    含義

    Identity

    string

    登錄請求標志符,該標志符會發送給服務端,服務端在發送登錄答復的時候會回傳該標志,聯盟站點會根據此標志來驗證請求是否是偽造的。

    TimeStamp

    DateTime

    請求的時間戳

    7.2功能

    該接口在聯盟站點,用于記錄和描述聯盟站點的登錄請求,這些信息在發出登錄請求的時候創建,在收到登錄答復的時候銷毀。用于確保登錄答復的不可復用性。7.3 默認實現

    7.3 默認實現

    在SSO組件中,已經實現了一個默認的ILoginRequest對象。為DefaultServer/ LoginRequest.cs。

     

    8 ILoginRequestContainer接口設計說明

    8.1接口描述

    ILoginRequestContainer接口包括3個方法,用于在聯盟站點中記錄和維護登錄請求

     

    方法名

    含義和作用

    Add

    添加登錄請求信息

    Check

    檢查登錄請求是否存在

    Remove

    銷毀存在的登錄請求

    8.2功能

    該接口在聯盟站點,用于在聯盟站點中記錄和維護登錄請求

    8.3 默認實現

    在SSO組件中,已經實現了一個默認的ILoginRequestContainer對象。為DefaultServer/ LoginRequestContainer.cs。

     

    9 IUserStateContainer接口設計說明

    9.1接口描述

    IUserStateContainer接口包括5個方法,用于在聯盟站點中記錄和維護在線聯盟用戶信息

     

    方法名

    含義和作用

    Add

    添加登錄用戶

    GetList

    獲取在線用戶清單

    Check

    檢查某個用戶是否已經在線

    Remove

    移除某個在線用戶。

    GetUserCount

    獲取在線用戶個數

    9.2功能

    該接口在聯盟站點,用于在聯盟站點中記錄和維護在線聯盟用戶信息

    9.3 默認實現

    在SSO組件中,已經實現了一個默認的IUserStateContainer對象。為DefaultServer/ UserState.cs。

     

     

    10 IClient接口設計說明

    10.1接口描述

    IClient接口包括6個屬性和2個方法,用于發出登錄請求和登出請求

    8個屬性為:

    屬性名稱

    類型

    含義

    SiteID

    string

    站點編號

    PrivateKey

    string

    數據交換時加密或者簽名用的公鑰

    LoginAddress

    string

    認證中心登錄地址

    LogoutAddress

    string

    認證中心登出地址

    Uid

    string

    登錄的用戶編號

    TimeOut

    int

    登錄答復的超時時間,單位s

    UidField

    string

    登錄登出請求中的用戶信息的存儲位置

    FromUrlField

    string

    登錄請求中的來源網址存儲位置

    2個方法為

    方法名

    含義和作用

    Login

    發出登錄請求,并處理登錄答復

    LogOut

    登出

    10.2功能

    該接口在聯盟站點,用于發出登錄請求和登出請求

    10.3 默認實現

    在SSO組件中,已經實現了一個默認的IClient對象。為DefaultServer/ DefaultClient.cs

     

    11 本系統的安全性

    11.1 登錄請求的格式

    聯盟站點向認證中心發送的登錄請求格式如下:

    站點信息+登錄請求編號+時間戳+空用戶信息+對站點信息和登錄清秋號的簽名信息。
    除了簽名信息之外的全部信息均為明文傳送,但因為重要的數據均經過數字簽名,結果是站點信息和登錄請求編號是不能被篡改的,保證了認證中心收到的登錄請求的真實性。

    11.2 登錄答復的格式

    認證中心發給聯盟站點的登錄答復格式如下

    登錄用戶信息+登錄請求編號+時間戳+對用戶信息和登錄請求號和時間戳的簽名信息
    其中登錄用戶信息是經過非對稱加密的。請求號和時間戳因為經過簽名,故也不能篡改,這樣就可以保證聯盟站點收到的登錄答復的真實性和完整性。并且非正常聯盟站點無法解密用戶信息,也無法從中獲取好處。  

    篇幅太大,下面還有很長的內容要說,先發布以下,感興趣的朋友可以先下載程序嘗試使用。以后,我會逐漸添加Sql 和 Oracle的實現。您也可以根據接口規范,開發符合自己系統需求的SSO系統,今天先到這吧

    程序文件:/Files/jillzhang/SSO.rar


    更新:新增登錄流程圖:

    [原創]單點登陸(SSO)組件的設計與實現二-登錄流程圖 








    新增登出流程圖 2008-02-02



    上面是整體流程圖,這個SSO組件在安全上有了很充分的考慮,可以說是非常安全,那么下面看看登錄請求數據的格式,和為何它能保證真實性和完整性



    這樣,當數據在傳輸過程中,如果站點編號,用戶編號,請求號任意一項做任何的修改,當認證中心接收到數據之后,均無法與簽名信息進行匹配。凡是認證中心能驗證通過的請求均為合法的,真實的,完整的請求信息。

    登錄答復的格式如下圖所示

    因為登錄號,時間戳,用戶信息均加入數字簽名信息,所以這些數據在傳輸中不能被偽造和篡改,而用戶信息經過非對稱性加密,也防止非真正請求發送者能解析出用戶信息,這樣在接受和發送請求和響應的時候,就實現了絕對的安全。
    當然不是沒有破綻,破綻在于當請求答復未到達聯盟站點之前,有人截獲并先于正常用戶登錄了聯盟站點,此時我們可以將用戶的ip信息作為答復數據的一部分,加入簽名,以此實現很高的安全保證

    登出流程圖


    posted on 2008-03-07 16:36 jinfeng_wang 閱讀(853) 評論(0)  編輯  收藏 所屬分類: ZZview
    主站蜘蛛池模板: 亚洲精品美女久久久久久久| 全免费a级毛片免费看不卡| 理论片在线观看免费| 亚洲第一页在线视频| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 四虎永久在线精品免费一区二区 | 一本色道久久综合亚洲精品| 成年女人视频网站免费m| 久9这里精品免费视频| 特级毛片aaaa免费观看| 亚洲国产无线乱码在线观看| 亚洲视频在线不卡| 亚洲国产老鸭窝一区二区三区| 亚洲另类激情专区小说图片| 国产真实伦在线视频免费观看| 国产va免费精品观看精品| 5g影院5g天天爽永久免费影院| 在线看片免费人成视频久网下载 | 免费一级大黄特色大片| 午夜爱爱免费视频| 免费可以在线看A∨网站| 永久免费毛片在线播放| 亚州免费一级毛片| 亚洲一区二区三区免费视频| 99视频免费观看| 久久午夜伦鲁片免费无码| 久久免费福利视频| 午夜无码A级毛片免费视频| 成在人线av无码免费高潮喷水| 水蜜桃视频在线观看免费播放高清 | 久久精品成人免费看| 91成人免费观看在线观看| 本免费AV无码专区一区| 天黑黑影院在线观看视频高清免费 | 最近免费中文字幕大全高清大全1| 久热免费在线视频| 免费A级毛片av无码| 成人免费激情视频| 999国内精品永久免费视频| 国产va精品免费观看| 午夜两性色视频免费网站|