2

I have an Azure account and currently a Mobile Service setup with a SQL Database so that my Windows Store app can communicate with the database.

I have developed sites using ASP.NET WebPages authentication. And I need something similar for my Windows Store app.

I have successfully gone through the documentation and tutorials on the Windows Azure website and implemented ACS (Windows Live ID, Google, Yahoo!, and Facebook) - but the thing is - I don't want Google, Yahoo!, Facebook or even Windows Live ID or Microsoft Account) logins - I want my OWN login but it seems that they don't give you this option (correct me if I am wrong).

I need to allow users to signup from within my application (that means, providing their name, DOB, email, phone, address, etc) and shove it all in my database.

Now, after implementing Microsoft Account login with my Azure service, I found out that you can't even get the most basic information about any user who has logged in to your application - not even an email address.

I have spent hours searching online for something that could possibly help but I am running out of keywords - and have not hit a single related result yet.

Does anyone know if this is possible? How would we go about integrating login and signup with a Windows Store app that set/gets this data into/from a Windows Azure service?

Any code, samples, links, tutorials, documentation, etc would be highly appreciated.

4

3 回答 3

4

您已经走上了连接外部身份验证的道路,在我看来,这对于面向外部的 Web 应用程序来说是一种更好的方法。好处是:

  • 您的应用程序只负责授权而不是身份验证。身份验证涉及大量工作和大量最佳实践。最好让最了解的人承担这个负担。这并不意味着您不应该尝试理解它。
  • 如果您的网站被黑客入侵,您不必告诉他们他们的用户名/电子邮件和密码组合已被泄露,他们可能不得不在其他网站上更改密码。
  • 您还确保您的用户不必记住/管理另一个用户名/电子邮件地址密码组合

如果您真的想进行身份验证,那很好,但您需要自己做。查看有关Asp.Net Membership的示例。这不是唯一的方法,也不是最好的方法,但是有很多例子。

现在,如果您决定要使用外部身份验证,我可以为您提供一些指导来帮助您当前的实现。

  • 首先要注意的是,您从 Live、Google、Facebook 获得的 ID 只能被假定为对于该提供商来说是唯一的。因此,如果您想在您的系统中为该身份保留一个配置文件,并且您想使用多个提供商,您需要以这样一种方式实现它,即您可以在您的系统中保持唯一的 id 并帮助您将其与提供者。

使用社交身份提供者和 ACS 进行网站身份验证第 2 部分 - 将 ACS 与通用配置文件提供者集成

  • 正如您所发现的,并非所有身份验证提供程序都返回相同的“声明”。声明是用户声称拥有的东西,例如电子邮件地址、姓名、出生日期等。默认情况下,您可以通过 ACS 使用的所有内容都返回 Uid,有些则返回姓名和电子邮件地址。你要做的就是填补空白。当有人注册时,您需要提取相关索赔,然后要求他们填写缺失的索赔。您可能还希望将 ACS 中的不同声明映射到您可以在您的应用程序中使用的通用名称,因为一个提供商可能使用稍微不同的名称。

与 Windows Azure 访问控制服务的联合身份

  • 仅仅因为您不处理身份验证,您仍然需要负责保持应用程序的安全。已经为您完成了一半的工作,因此您的代码应该更轻松,但您仍然需要使用角色。

Windows Azure 基于角色的身份验证 (ACS)

  • 这种方法的真正好处是您可以像 SO 使用身份模型一样实现您的应用程序。您可以允许用户将多个身份与他们的个人资料相关联,这意味着他们可以按照自己的意愿登录。
于 2013-04-09T13:19:15.190 回答
2

如果您选择不使用内置提供程序,ACS则需要使用 SAML、OpenId 等实现您自己的身份提供程序...

您可以查看Windows Identity Foundation(WIF) 以实现WS-TrustWS-Federation.

还有ADFS一个具有相同的支持集,但将 Active Directory 与 WIF 结合使用,Azure 有自己的 AD 版本可供使用。

还有thinktecture identityserver一个可以让你开始冒险进入 IdP 领域,但我自己还没有使用它。

如果你想去 OpenId 路线,有DotNetOpenAuth.

于 2013-04-09T13:18:25.167 回答
2

如果您希望将自定义身份添加到您的移动服务应用程序,请查看 Josh 关于自定义身份验证的帖子:http ://www.thejoyofcode.com/Exploring_custom_identity_in_Mobile_Services_Day_12_.aspx

于 2013-04-09T18:09:50.567 回答