之前我一直在做.NET控制台,.NET Webforms和轻量级WPF,但这是我第一次涉足Windows 8 Metro开发。
我正在开发一个依赖于需要身份验证令牌的Web服务的应用程序。没有这个令牌,应用程序是没用的;他们只需要提供此令牌而不是用户名或密码。如果应用需要取消授权,服务提供商可以撤销令牌。
由于任何应用功能基本上都需要令牌;它需要是全球性的,它需要在应用程序的生命周期中持续存在;如果应用程序在下次运行后加载应用程序终止后以安全的方式记住凭据,那将会很棒。我尝试在App.xaml.cs文件中粘贴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中使用应用程序范围的凭据集的最佳实践
答案 0 :(得分:1)
如果您使用Web服务进行身份验证,则需要使用Web身份验证代理(Windows.Security.Authentication.Web.WebAuthenticationBroker,另请参阅http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122上的示例)。凭证集合保留在代理中,您将获得服务器响应,通常包含后续调用所需的密钥。
为此目的使用凭据选择器并不是您想要的,因为该UI主要用于企业方案,并且仍然需要您直接在应用程序中管理凭据。 Web Auth Broker的设计使得凭证始终存在于服务上,而您获得的所有凭据都是关键。文档Web authentication broker for online providers中还有一个主题,用于创建一个在代理内部工作良好的登录页面。
请注意,您可以使用密钥保险库作为密钥 - 只需在凭证对象中为其提供一些虚拟用户名。