2011年10月21日 星期五

單一簽入(SingleSignOn)的簡單作法_Part3_自製單簽架構

如果你需要的單簽是,於A登入→關閉瀏覽器→開啟B則自動登入B,那可以換一篇文章了。

如果你需要的單簽是,於A登入→按下某鈕轉至B→並自動於B登入,或是於不同的介面(A、B系統、手持裝置等)使用同組帳密登入,那可以看一下

架構:

說明:
1. 在資料庫增加tokenInfo的表格,並且建立UserID、token、isActive與updatetime欄位。
2. 以WebService撰寫三個服務,分別為:
A. CreateToken:依照輸入的帳號、密碼產生token,並存入tokenInfo表內。
B. CheckToken:由傳入的token至表tokenInfo,以isActive與updatetime判斷是否有效,若有效傳回UserID,並且更新時間。
C. GetUserInfo:判斷token是否有效,若有效傳回所需的使用者資訊。

情境:
1. 打開A系統,輸入帳密以後,藉由CreateToken產生token,於A系統點擊B系統之超連結,並將該token值置於url參數,轉址至B系統;B系統於pageload去判斷是否有token,若有則利用CheckToken判斷token是否有效,有效則自動登入。

2. 行動裝置將可利用該方式,與Web系統使用同一個帳號密碼,於行動裝置上呼叫WebService來建立token,爾後需驗證之操作則進行CheckToken的動作。



註:產生token的方式,則可以簡單的利用random的方式於字串陣列中隨機組成。

註2:於手持裝置呼叫WebService時,可能會怕知道位址的人用別的程式呼叫,即可利用上述方式,做一個簡單的登入控管,並於每一個webService方法都做token的驗證,來避免被其他人呼叫的可能。

1 則留言:

kolen 提到...

大神,先拜一下,寫得很詳細。

張貼留言