6

这是场景:

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

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

谢谢

4

7 回答 7

10

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

您可以获得的唯一值称为名称标识符。每个 RP 域都是唯一的(即,它不是每个 LiveID 的单个值,而是因域而异)。这也是故意的,这样您就不能让不同的网站合作跟踪用户。通常,您会获得名称标识符(称为 PUID),然后将其粘贴到数据库中的某个位置,这样您就知道您以前见过它。然后用户在您这边注册姓名、电子邮件等,然后您将其与 PUID 相关联。

另一方面,LiveId 还支持 OAuth2,因此您可以从用户那里获取您需要的任何用户配置文件信息(征得他/她的同意)。见这里

于 2011-10-24T15:07:44.813 回答
8

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

顺便说一句,您可以使用幕后代码页从用户那里获得它,但它对用户来说不是无缝的,需要手动过程,但是 LiveID 系统这样做并不更安全,它只是被破坏了。

于 2012-10-19T15:20:41.243 回答
1

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

https://gist.github.com/1867792

不构建代码并且不包含依赖项......但它主要基于移植到 MVC4 的早期 thinktecture 入门站点,并进行了如上所示的更改。

于 2012-02-20T04:19:36.417 回答
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-和-saml.aspx

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

您还可以通过在身份提供程序中单击它来删除作为登录选项的 windows live Id,然后取消选中与您的依赖方的关联。

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

于 2013-06-20T19:21:22.890 回答
0

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

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

于 2013-08-06T11:37:18.587 回答
0

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

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

于 2013-10-17T18:07:43.083 回答
-1

它可以通过 iFrame Trick 实现。

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

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

于 2013-03-21T14:45:52.927 回答