2012-03-14 26 views
0

的生活結合保持憑據我有一個使用託管在IIS的WCF服務(使用BasicHTTPBinding)一個WPF客戶端應用程序。我正嘗試轉移到SSL和基本身份驗證,因爲我們有用戶將在離線電腦上使用該應用。我有一個構建並返回服務對象實例的類(我們將其稱爲ProxyGenerator),並存儲用戶名(字符串)和密碼(securestring)。流程從
爲WCF在我的應用程序

  1. 登錄窗口,有文本框,密碼框和登錄按鈕。登錄按鈕創建proxygenerator對象,設置它的用戶名和密碼,並將其傳遞(通過參數線程啓動)到:

  2. 主窗口,包含用戶界面做實Work®,並呼籲ProxyGenerator.GetProxy()獲得代理使用。

這似乎工作確定,直到我們得到:

    3.    的UserControl1(嵌入在主窗口),這需要訪問代理服務器。

這將是應對這種理想的方式,因爲需要脫域的訪問?理想情況下,每個人都可以在域上,我可以通過iis使用Windows身份驗證(因此,只要我需要它們就可以從系統獲取用戶憑據,實際上它現在是如何工作的)。

注:這是目前一個「剛剛得到它現在的工作,後來修復」項目。此外,我在這個服務的東西有點新,所以代理可能是錯誤的詞,或者我可能會在錯誤的上下文中使用它。

public class ProxyGenerator 
{ 

    public string username; 
    public SecureString password; 
    public string endpoint; 

    private TestingService.ServiceClient _proxy = null; 

    public ProxyGenerator(string uname, SecureString pword) 
    { 
     username = uname; 
     password = pword; 

     endpoint = "insert endpoint here" 

    } 

    public TestingService.ServiceClient GetProxy() 
    { 
     _proxy = new ServiceClient(endpoint); 
     _proxy.ClientCredentials.UserName.UserName = username; 
     _proxy.ClientCredentials.UserName.Password = password; 

     return _proxy; 
    } 
} 

回答

0

那麼,這是我所做的,對於任何一個最終在這裏有一天的人來說。我知道我討厭沒有回答的問題!

首先,我得的什麼實際發生的把握,並實現應用程序的啓動是不是它應該是。 app.xaml/cs會調用loginwindow,loginwindow會要求提供憑證,然後用證書實例化(?這就是正確的詞)上面的類。它會創建一個新的線程來加載MainWindow並將類的實例傳遞給它。該線程會用類的實例調用mainwindow構造函數,程序將啓動。這一切都已完成,因此您可以在等待時在登錄窗口上看到一些動畫。

我所做的是使該繼承窗口,並用SetProxyGenerator()方法,並使用ProxyGenerator對象擴展成爲一個新類。我經歷了所有的數據查看/請求窗口,以繼承新的類。然後我改變了程序的流程,首先加載主窗口並在構造函數中調用另一個更簡單的登錄窗口。用信息構建代理生成器,現在我只是將它傳遞給我創建的任何新窗口。現在一切都在同一個線程中,並且功能齊全。

不知道爲什麼啓動作出這麼複雜......

也許下次你們可以回答我的問題。 :)

相關問題