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

时间:2013-03-04 07:54:30

标签: asp.net azure

我在我的应用程序中使用Window Azure平台,我正在尝试从谷歌/雅虎的帐户中获取用户信息。

但是,通过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不会将country / mobilenumber值计入其帐户.... PLZ HELP !!!!!

1 个答案:

答案 0 :(得分:2)

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

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

在我的拙见中,一些提供商已经提供了太多 - 我不希望他们分享任何东西,除了GUID,就像微软一样。例如谷歌分享名称和电子邮件地址,我不一定要允许这样做。很多时候我宁愿保持我的gmail电子邮件地址私密,并为我登录的应用程序提供不同的,或者根本没有。

简而言之 - 我们认为,如果您想了解有关您用户的任何信息,您应该向他们询问,而不是从其他地方获取。

有关此观点的更多信息,如果有兴趣,请点击此处 - http://yossidahan.wordpress.com/2012/02/19/end-to-end-authentication-and-authorisation-scenario-for-mvcacs/