WCF 的第一次初體驗
因為在工作上有開發PDA(WM5)的程式,基於系統整合的作法,將所有的認證方式採用Windows AD驗證。
在Windows Form的程式下,可以透過 System.DirectoyServices.AccountManagement 所提供的方法 ValidateCredentials 來進行驗證處理。但是在 WM5 下,卻沒有辦法參考 System.DirectoyServices.AccountManagement。
最近看了WCF相關的文件,發現了一線生機。於是就著手來進行這透過 WCF 來進行 AD 驗證的開發。
首先,當然是新增一個WCF專案,搭配的是 IIS 所以使用 WCF 服務應用程式,並且採用 NET Framework 4。
將原有的 IService1 刪除,並且新增一個 WCF 服務,例:ADCheck.svc
編輯 IADCheck.cs,刪除 DoWork 這個操作合約,再新增一個新的操作合約,LoginCheck 為 Boolean 型別,導入三個字串參數為登入帳號、密碼與網域名稱。
再來編輯 ADCheck.svc.cs。新增對應的 LoginCheck 方法,請記得要加入參考 System.DirectoryServices.AccountManagement。
如此就完成 WCF 的部份。接下來就是將這個WCF發行到IIS上,當然也是可以建置部署套件來進行安裝。因為是在區網中,因此就選用發行到檔案系統的方式來處理。
先進行發行的設定
選擇發行的方法為「檔案系統」
選取目地路徑,再按下發行鍵,此時即會將 ADCheck.svc 與相關的元件檔 WCF40.dll 發行到指定的資料夾。
使用方法
Windows/Web Form 使用時,須透過服務參考。
透過 ADCheck.ADCheckClient wcfADCHK = new ADCheck.ADCheckClient(); 產生實體。
再使用方法 wcfADCHK.LoginCheck 來對使用者所輸入的帳號、密碼與網域名稱進行驗證。
ADCheck.ADCheckClient wcfADCHK = new ADCheck.ADCheckClient();
if (wcfADCHK.LoginCheck(LoginID, LoginPwd, DomainName))
{
//驗證成功!
}
else
{
//驗證失敗!
}
wcfADCHK.Close();
如此就大功告成了!
程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。