1

我正在为我的应用程序使用 Window Azure 平台,我试图从他们在 google/yahoo 中的帐户中获取用户的信息。

但是我通过 Azure 的输入/输出声明获得的信息只是他们的姓名、电子邮件地址和身份提供者......当他们在 google/yahoo 中注册时,有人可以帮我获取他们的国家或手机号码吗

这是我获取声明的示例代码:

protected void Page_Load(object sender, EventArgs e)
    {
        {
            ClaimsPrincipal icp = Thread.CurrentPrincipal as ClaimsPrincipal;
            ClaimsIdentity claimsidentity = icp.Identity as ClaimsIdentity;
            string  email = "", name = "", idprovider = "" ;
            foreach (Claim c in claimsidentity.Claims)
            {

                if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")
                {
                    email = c.Value;
                }
                if (c.ClaimType == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name")
                {
                    name = c.Value;
                }
                if (c.ClaimType == "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider")
                {
                    idprovider = c.Value;
                }

            }

            Label1.Text = (name + email + idprovider);

当我编辑我的规则时,ClaimsPrincipal 没有将国家/移动号码值计入其帐户....PLZ HELP !!!!!

4

1 回答 1

2

据我所知 - 不是直接的,应该是这样的!

当用户同意向您的应用程序提供他或她的身份时,他们不一定,当然也不会明确同意与您共享个人资料信息,因此身份提供者真的不应该这样做。

以我的拙见,一些提供商已经提供了太多东西——我没想到他们会像微软那样共享 GUID 以外的任何东西。例如,谷歌共享姓名和电子邮件地址,我不一定希望允许这样做。很多时候,我宁愿将我的 gmail 电子邮件地址保密,并为我正在登录的应用程序提供一个不同的电子邮件地址,或者根本不提供。

简而言之 - 观点是,如果您想要有关用户的任何信息 - 您应该向他们索取,而不是从其他地方获取。

更多关于这个观点,如果有兴趣,在这里 - http://yossidahan.wordpress.com/2012/02/19/end-to-end-authentication-and-authorisation-scenario-for-mvcacs/

于 2013-03-04T09:58:43.697 回答