2012-09-19 44 views
6

我正在使用SSL将Windows 8保护到Windows Azure托管的WCF服务连接。我有兴趣验证用户使用我的Windows 8应用程序,而不仅仅是使用Fiddler的一些“黑客”。在Windows 8上使用Microsoft帐户的Azure ACS 2.0

我显然不能在c#代码中存储用户名和密码,并且在这种情况下,我真的很想避免每次使用应用程序时都要求用户输入用户名和密码(或者对于这个问题) 。

我已经看过Azure ACS,但它看起来像只用于单一登录,并且用户每次都必须输入用户名和密码。

反正有:

  • 使用默认的Microsoft帐户(大多数用户会进入时,他们开始安装Windows 8)与ACS?
  • 加密并存储用户的登录详细信息,以防止用户每次都输入登录详细信息?

谢谢!

+1

由于您的应用程序在Windows 8上,并且您希望使用Microsoft帐户,您是否考虑过直接使用Live SDK? Michael Crump在http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx上有关于将Live SDK与WinRT应用程序集成的文章 –

回答

2

关于您的需求“我很想验证用户是否在使用我的Windows 8应用程序,而不仅仅是使用Fiddler的一些'黑客'。”,我不确定您会如何保护您的应用程序想要尝试以不同的方式使用应用程序,该方法会找到自己的方式,如果您认为使用ACS或LiveSDK可以增加任何安全性,我不这么认为。

ACS或LiveSDK服务是验证特定用户的方法,然后允许他们使用您的应用程序。一旦将认证令牌提供给您的应用程序有关特定用户,并且您无法保存并再次验证该信息,则在您的应用程序中使用基于ACS/LiveSDK的身份验证或不拥有它们之间没有区别。这些基于oAuth的服务只是对用户进行身份验证的一种方式,您仍然需要编写额外的代码层来提供用户特定的服务。

如果您使用ACS/oAuth /或您自己的会员服务,则无关紧要,用户必须输入用户名和密码才能获得经过身份验证的时间。根据登录时间和类型,您可以将用户活动时间保持x秒,但会话将过期,用户必须输入用户名和密码。本地存储用户名和密码以避免再次输入凭据不是一个好的应用程序设计。

现在关于您的第一个问题,您应该使用LiveSDK(而不是Azure ACS)来验证Live(Hotmail,Live,Skydrive和Outlook域)用户,因为在Windows 8中,大多数服务都使用这些ID,这些将帮助您的应用程序成为同一生态系统的一部分。您可以使用this latest doc在您的应用程序中使用Live SDK。如果您将在Windows 8应用程序中使用Live SDK,并且用户在Windows 8上为其他应用程序使用相同的实时ID并在应用程序之前登录,则应用程序已经拥有实时会话以使用它,具体取决于Live ID和应用程序设置。

关于第二个问题“加密并存储用户的登录详细信息以防止用户每次都输入登录详细信息?”我不确定你为什么需要它。首先没有oAuth服务会为您提供除用户名以外的用户登录凭证,只有您可以保存才能验证用户,如果他再次访问并且您可以使用它来确保它是合适的用户。您必须将此信息存储到云中,然后一旦通过身份验证,就可以做任何你想做的事情。

+0

所以基本上,我无法验证有人使用我的应用程序,因为在一天结束时,我的XAP软件包可供任何需要它的人访问。 Windows Phone和Windows 8应用程序包现在已加密,但看起来好像人们已经入侵它。 http://forum.mobilism.org/viewtopic.php?f=1073&t=386304。有没有办法验证有人使用我的未修改的应用程序? – user1567095

+1

不幸的是,这不是一个讨论此类场景的论坛。正如我所提到的,事实是,如果有人(1%或更少)想以其他方式使用您的应用程序,他们会找到一种方法,因此您需要决定您需要花费多少能源/资源。 – AvkashChauhan

+0

谢谢!我会看看我能做些什么。你知道我可以讨论这个的任何地方吗? – user1567095

2

查看Windows 8现代风格应用程序的凭证存储示例 - http://code.msdn.microsoft.com/windowsapps/PasswordVault-f01be74a。这不是Azure ACS - 但它应该有希望帮助你解决你的问题。 PasswordVault是一个新的API(Windows.Security.Credentials.PasswordVault),它基于我们在.NET 3中引入的识别功能。它允许您在操作系统,受保护的存储区中安全地存储远程应用程序凭证,并在其中动态访问你的申请。用户仍可完全控制商店,并可根据需要使用控制面板删除数据。 目前,这是大多数现代应用程序持久化数据的方式,例如用于远程服务调用(如Twitter)的OAuth令牌。

这只适用于第三方身份。如果您想要使用Microsoft帐户,请按照上面的指导进行操作,并查看LiveSDK。

相关问题