Asp.net 如何向ACS服务标识添加自定义声明

Asp.net 如何向ACS服务标识添加自定义声明,asp.net,azure,Asp.net,Azure,我在我的应用程序中使用了WindowsAzure平台,我试图从他们在google/yahoo中的帐户获取用户信息 但是我通过Azure的输入/输出声明获得的信息只是他们的姓名、电子邮件地址和身份提供者……当他们在谷歌/雅虎注册时,有人能帮我获取他们的国家或他们的手机号码吗 以下是我获取索赔的示例代码: protected void Page_Load(object sender, EventArgs e) { { ClaimsPrincipal i

我在我的应用程序中使用了WindowsAzure平台,我试图从他们在google/yahoo中的帐户获取用户信息

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

以下是我获取索赔的示例代码:

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没有将国家/地区/手机号码值计入其帐户…请提供帮助

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

当用户同意在您的应用程序中提供他或她的身份时,他们不一定,当然也不明确同意与您共享配置文件信息,因此身份提供商不应该这样做

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

简言之,这种观点认为,如果你想要任何关于你用户的信息,你应该向他们索取,而不是从其他地方获得

更多关于这一观点的信息,如果有兴趣,请点击此处-