我先簡單的介紹一下我的需求我希望我做的軟件中可以與域控集成實現單點登錄且不需要額外輸入帳號秘密當然這是在已經登陸到域的前提下
為此我翻過很多資料Windows 確實提供了 API 來操作登錄但小弟比較愚笨一直感覺這些 API 使用起來很笨拙且根據系統需求往往進行域控帳號認證都是在服務器上進行的因為你的機器可能不能訪問到我的域控服務器對於一般的 IT 服務器部署域控服務器都是在一個安全區域裡面的
在此之前我已經實現了一個WebService 提供了一個 Login(UserName Password) 的方法 Login 可以在域控上進行認證但這個方法必須在客戶端自己做一個登陸窗體
一次偶然的機會我發現如果在Webservice 的 IIS 上設置了 NT 集成用戶認證那麼在非域環境中登陸的時候是會自動彈出一個登陸密碼的框框的其實這點我早就應該知道了只是以前都是在網頁中彈出的沒想到在 C/S 環境中也會自動彈出根據這一個發現我設計了一個簡單的 SSO 登陸方式
首先實現一個Webservice 我選用的 C# 實現的微軟這點還是做得非常易用的這個 Service 只需要提供一個方法
public string GetUserName() { return UserIdentityIsauthorized?UserIdentityName }
實現也很簡單就從當前認證的用戶信息中獲取用戶的名字就可以了
然後發布這個服務並在IIS 中設置賬戶的安全信息是集成 NT 域控認證同時取消匿名訪問
這樣就可以現在你只需要在你的應用中在剛開始初始化的時候調用一下這個WebServie 如果獲取的賬號名不為空就表示賬戶已經在域控進行認證了
關鍵是這個方法可以讓你在很多地方進行復用使用也很簡單不過前提必須是網絡應用那種單機應用就不怎麼適合了
From:http://tw.wingwit.com/Article/program/net/201311/13181.html