2013-02-13 56 views
1

我有一個Azure卷軸需要ACSv2身份驗證,我想從winforms應用程序訪問。我的許多客戶使用Windows XP,因此我無法使用WIF(Windows XP上不可用)。在這種情況下,爲我的Web請求獲取身份驗證令牌的最佳方式是什麼?從Winforms訪問ACS Azure

回答

1

對於桌面應用程序,你可以做到以下幾點:

  1. 從ACS命名空間中獲取身份提供者列表
  2. 顯示這些在WebBrowser控件
  3. 在用戶登錄後,得到令牌從WebBrowser控件中解析出來。

這是類似當您要在Windows Phone應用程序中使用ACS時。我建議你看看這篇博文:Azure ACS on Windows Phone 7。以下是在用戶通過WebBrowser控件(在WP7上)登錄後解析令牌的示例代碼:

private void SignInWebBrowserControl_ScriptNotify(object sender, NotifyEventArgs e) 
{ 
    var acsResponse = ACSResponse.FromJSON(e.Value); 

    RequestSecurityTokenResponse rstr = null; 
    Exception exception = null; 
    try 
    { 
     string binaryToken = HttpUtility.HtmlDecode(acsResponse.securityToken); 
     string tokenText = RequestSecurityTokenResponseDeserializer.ProcessBinaryToken(binaryToken); 
     DateTime expiration = DateTime.Now + TimeSpan.FromSeconds(acsResponse.expires – acsResponse.created); 

     rstr = new RequestSecurityTokenResponse 
        { 
         Expiration = expiration, 
         TokenString = tokenText, 
         TokenType = acsResponse.tokenType 
        }; 
+0

我想將其標記爲已回答。 「OnAuthenticateRequest」事件處理程序中的「ValidateRequest」方法正常工作,但對身份驗證管理器向創建的「ClaimsPrincipal」發出的「Authenticate」請求失敗。校長不是身份驗證,整個節目都停在那裏。我想這是一個配置問題,但我無法確定失敗的根源。 – 2013-02-19 09:32:53

+0

好的。我已經得到這個工作。我的問題(我真的不明白這一點)是,我正在發送Web請求'http:// localhost/contacts/Directory',就像在示例中一樣,後驗證回調被觸發,一次爲該URL (http:// localhost/contacts/Directory /',但是沒有添加斜槓),並且測試現在可以正常工作 – 2013-02-19 14:27:10

+0

要實現這個作爲winforms應用程序,我們必須更改HttpUtility(用於URL編碼),令牌存儲的位置以及使用Web瀏覽器的ObjectForScripting屬性來實現通知。 – 2013-02-19 14:33:15