0

我之前一直在做 .NET 控制台、.NET Webforms 和轻型 WPF 工作,但这是我第一次涉足 Windows 8 Metro 开发。

我正在开发一个依赖于需要身份验证令牌的 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 中使用应用程序范围的一组凭据的最佳实践

4

1 回答 1

1

如果您使用 Web 服务进行身份验证,则希望改用 Web 身份验证代理(Windows.Security.Authentication.Web.WebAuthenticationBroker,另请参阅http://code.msdn.microsoft.com/windowsapps/Web上的示例-身份验证-d0485122)。凭据的集合保留在代理中,您会收到服务器响应,其中通常包含后续调用所需的密钥。

为此目的使用凭据选择器并不是您真正想要的,因为该 UI 主要用于企业场景,并且仍然需要您直接在应用程序中管理凭据。Web Auth Broker 的设计使凭据始终存在于服务中,而您得到的只是密钥。在线提供商的文档 Web 身份验证代理中还有一个主题是创建一个在代理内部工作得很好的登录页面。

请注意,您可以为密钥使用密码库——只需在凭证对象中给它一些虚拟用户名。

于 2013-08-08T03:40:51.110 回答