2013-08-07 58 views
0

我一直在做.NET控制檯,.NET Webforms和輕量WPF工作,但這是我第一次進入Windows 8 Metro開發。Windows 8 CredentialPicker - 給Win8初學者的建議

我正在開發一個依賴於需要身份驗證令牌的Web服務的應用程序。沒有這個令牌的應用程序是沒用的。他們只需要提供這個令牌而不是用戶名或密碼。如果應用程序需要取消授權,該令牌可以由服務提供商撤銷。

由於令牌基本上是任何應用程序功能所必需的;它需要是全球性的,它需要堅持終身的應用程序;如果應用程序在應用程序終止以在下次運行時加載後以安全的方式記住該憑證,那將是非常好的。我試着在App.xaml.cs文件中粘貼一個CredentialPicker,但是我猜這個credentialpicker需要在一個實際的頁面上?什麼是使這個全球化的最佳方式,並且當模型類檢測到無論出於何種原因都沒有憑證時產生憑證選擇器?

我的邏輯我想應該是:

Boot App 
Load App Start Page 
Check Disk for Credential Hash 
If Hash Not Exist, Launch CredentialPicker 
    Validate Credential/Key 
    If Credential/Key not valid, 
     Relaunch CredentialPicker 
    Else 
     Store Credentials To Disk 
Else 
    Use Existing Credentials; Proceed 

Store Credentials In PasswordVault for use during this app lifecycle 

道歉的詳細程度;我只想了解在Win8中使用應用程序範圍內的憑據集的最佳實踐

回答

1

如果使用Web服務進行身份驗證,則需要改爲使用Web身份驗證代理(Windows.Security.Authentication.Web.WebAuthenticationBroker ,也見http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122上的樣品)。證書集合保留在代理中,並且您得到的服務器響應通常包含您需要用於後續調用的密鑰。

爲此目的使用憑證選取器並不是您想要的,因爲該UI主要用於企業場景,並且仍然要求您直接在應用中管理憑證。網絡驗證代理的設計是爲了讓服務中始終存在憑據,並且您獲得的所有信息都是關鍵。在文檔Web authentication broker for online providers中還有一個主題是創建一個登錄頁面,該頁面在經紀商內部非常有用。

請注意,您可以將密碼保險箱用於密鑰 - 只需在憑證對象中給它一些虛擬用戶名即可。

+0

我明白了。我正在與Campfire集成,並不知道他們具有OAuth功能。希望這會讓事情變得更簡單。以前我使用的是'API密鑰'方法。 https://github.com/37signals/api/blob/master/sections/authentication.md 因此,我想我使用WebAuthenticationBroker,檢查token的responsedata,並將該標記用於我的後續Web請求。將不得不深入挖掘37信號文檔。 – Richthofen