Windows 8上带有Microsoft帐户的Azure ACS 2.0

use*_*095 6 wcf azure acs windows-8

我正在使用SSL保护我的Windows 8到Windows Azure托管的WCF服务连接.我有兴趣验证用户是使用我的Windows 8应用程序,而不仅仅是使用Fiddler的一些"黑客".

我显然无法在c#代码中存储用户名和密码,在这种情况下,我真的想避免在每次使用应用程序时(或者就此而言)要求用户输入用户名和密码.

我已经了解了Azure ACS,但它看起来只适用于单点登录,用户每次都必须输入用户名和密码.

无论如何:

  • 使用ACS时使用默认的Microsoft帐户(大多数用户在设置Windows 8时都会输入)?
  • 加密并存储用户的登录详细信息,以防止用户每次都必须输入登录详细信息?

谢谢!

Avk*_*han 2

关于您的要求“我有兴趣验证用户是否正在使用我的 Windows 8 应用程序,而不仅仅是一些使用 Fiddler 的‘黑客’。”,我不确定您会尝试保护您的应用程序有多深,就像其他人想要尝试消费一样如果您的应用程序有所不同,它们会找到自己的方式,如果您认为使用 ACS 或 LiveSDK 会增加任何安全性,我不这么认为。

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

无论您使用 ACS/oAuth/或您自己的会员服务,用户都必须输入用户名和密码才能不时进行身份验证。根据登录时间和类型,您可以使用户保持活动状态的时间为实时会话,但会话将过期,用户必须输入用户名和密码。在本地存储用户名和密码以避免再次输入凭据并不是一个好的应用程序设计。

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

关于你的第二个问题“加密并存储用户的登录详细信息以防止用户每次都必须输入登录详细信息?” 我不确定你为什么需要它。首先,除了用户名之外,任何 oAuth 服务都不会为您提供用户登录凭据,您可以保存这些凭据以在用户再次访问时验证该用户,并且您可以使用该凭据来确保它是正确的用户。您必须需要将此信息存储到云端,然后经过身份验证后,即可执行您想做的任何操作。