AZURE ACS - Windows Live ID - 如何获取经过身份验证的用户的电子邮件和名称?

时间:2011-10-24 06:27:37

标签: asp.net-mvc-3 azure acs

以下是该方案:

在AZURE Dev环境中运行的MVC 3应用程序 AZURE ACS中的身份验证实现方式与此处http://msdn.microsoft.com/en-us/library/hh127794.aspx

相同

我正在尝试获取用户名和电子邮件,但我找不到配置“声明规则”的方法,我会得到一个明确的文本值,而不是我得到一个字符串似乎要加密。 那么我可以用明文的方式配置规则吗?或者我可以解密返回的值吗? 这是否可能,或者我在这里看错了。

由于

7 个答案:

答案 0 :(得分:10)

IIRC,违反Windows Live隐私政策,将用户的姓名或电子邮件地址作为声明发布(与Gmail或Yahoo!不同)。因此,不可能从Live获取这些声明(除非您碰巧是Microsoft)。

您可以获得的唯一值称为名称标识符。它对于每个RP域是唯一的(即,它不是每个LiveID的单个值,而是因域而不同)。这也是故意的,因此您不能让不同的网站协作来跟踪用户。通常,您将获得名称标识符(称为PUID),然后将其粘贴到您的数据库中,以便您知道之前已经看过它。然后,用户在您身边注册姓名,电子邮件等,并将其与PUID相关联。

另一方面,LiveId也支持OAuth2,因此您可以从用户那里获得所需的任何用户个人资料信息(经他/她同意)。见here

答案 1 :(得分:8)

这是微软的#FAIL总数。用户在使用Google或其他提供商登录您的网站时,必须先接受。然后他们只是将基本信息传递给网站,网站使用它,每个人都很高兴。

顺便说一句,你可以通过幕后代码页面从用户那里得到它,但它不是用户无缝的,需要一个手动过程,但是LiveID系统不是更安全的,它只是被打破了。 / p>

答案 2 :(得分:1)

可能但需要一些自定义sts的代码:

https://gist.github.com/1867792

代码没有构建,并且不包含依赖项......但它主要基于移植到MVC4的早期thinktecture起始站点,并且上面显示了更改。

答案 3 :(得分:0)

此博客讨论了创建自定义Windows Live STS提供程序,然后将其作为SharePoint中的受信任身份提供程序合并。

http://blogs.technet.com/b/speschka/archive/2012/03/01/finally-a-useful-way-to-federate-with-windows-live-and-sharepoint-2010-using-oauth-and-saml.aspx

不幸的是,似乎Azure团队似乎并不理解人们可能希望从windows live id中获得有用的东西。

您还可以通过在身份提供商中点击登录来删除Windows Live Id作为登录选项,然后取消与您的信赖方的关联。

(真的很奇怪你不能选择删除它= P)

答案 4 :(得分:0)

有几种技术可以查询Live服务器以获取有关经过身份验证的用户的其他信息(当然,前提是他们已经同意)。您可以使用某些客户端javascript对您的网站进行一些简单的自定义,以获取信息,如下面的示例所示:http://msdn.microsoft.com/en-us/library/live/hh826534.aspx

从服务器端代码查询Live服务器也是可能的,尽管需要更多一些。 http://dominicbetts.github.io/waad-acs-sample/index.html中描述的示例应用程序在MVC4应用程序中显示了一种可能的方法。

答案 5 :(得分:0)

似乎有一种方式,有点复杂,但通过成为代理并使用实时连接API,您可以实现此功能。

请参阅:http://code.msdn.microsoft.com/windowsazure/Get-Azure-ACS-work-40d588cc#content

答案 6 :(得分:-1)

它可能由iFrame Trick。

<iframe src="https://login.live.com/login.srf?wa=wsignout1.0" frameborder="0"></iframe>

这不会将您重定向到MSN页面