C S中利用域控進行SSO的簡單實現方式

2021-08-23 15:24:24 字數 848 閱讀 8100

我先簡單的介紹一下我的需求。我希望我做的軟體中,可以與域控整合,實現單點登入,且不需要額外輸入帳號秘密。當然這是在已經登陸到域的前提下。

為此我翻過很多資料。windows 確實提供了 api 來操作登入。但小弟比較愚笨,一直感覺這些 api 使用起來很笨拙。且根據系統需求,往往進行域控帳號認證,都是在伺服器上進行的。因為你的機器可能不能訪問到我的域控伺服器。對於一般的 it 伺服器部署,域控伺服器都是在乙個安全區域裡面的。

在此之前,我已經實現了乙個webservice ,提供了乙個 login(username,password) 的方法, login 可以在域控上進行認證。但這個方法必須在客戶端自己做乙個登陸窗體。

一次偶然的機會,我發現,如果在webservice 的 iis 上設定了 nt 整合使用者認證,那麼在非域環境中登陸的時候,是會自動彈出乙個登陸密碼的框框的。其實這點我早就應該知道了,只是以前都是在網頁中彈出的,沒想到在 c/s 環境中也會自動彈出,根據這乙個發現,我設計了乙個簡單的 sso 登陸方式:

首先,實現乙個webservice ,我選用的 c# 實現的,微軟這點還是做得非常易用的。這個 service ,只需要提供乙個方法:

publicstringgetusername()

實現也很簡單,就從當前認證的使用者資訊中獲取使用者的名字就可以了。

然後,發布這個服務,並在iis 中設定賬戶的安全資訊是整合 nt 域控認證,同時取消匿名訪問。

這樣就可以,現在你只需要在你的應用中,在剛開始初始化的時候,呼叫一下這個webservie, 如果獲取的賬號名不為空,就表示賬戶已經在域控進行認證了。

關鍵是,這個方法可以讓你在很多地方進行復用,使用也很簡單。不過前提必須是網路應用。那種單機應用就不怎麼適合了。

C S中利用域控進行SSO的簡單實現方式

我先簡單的介紹一下我的需求。我希望我做的軟體中,可以與域控整合,實現單點登入,且不需要額外輸入帳號秘密。當然這是在已經登陸到域的前提下。為此我翻過很多資料。windows 確實提供了 api來操作登入。但小弟比較愚笨,一直感覺這些 api使用起來很笨拙。且根據系統需求,往往進行域控帳號認證,都是在伺...

用跨域cookie實現簡單的SSO

流程大約是 乙個靜態頁中,用iframe分別鑲嵌兩個動態頁.最初登陸的cookie存放在頁a中,頁b要使用cookie時就用頁面跳轉的形式傳送請求,找到cookie後再加密傳回頁b處理.理論很簡單,而且模式也和大多請求返回狀態的sso差不多.但是有幾個地方是要注意一下的.1.頁面裡的cookie不能...

利用jquery 的jsonp 進行跨域訪問

伺服器返回的資料必須是 jsonpcallback 那麼 jsonpcallback 2.也可以自定義jsonpcallback 方法,把結果返回到乙個元素中,然後用另外的方法定時去訪問這個元素,如果該元素存在資料,證明訪問完成 但是這樣做的問題是,如果存在服務失敗和超時的話,這些都無法被獲取和處理...