Microsoft身份验证ID

时间:2016-08-17 18:09:59

标签: azure azure-web-sites

我有一个拥有大量用户的应用。我现在有更新决定我想要他们的电子邮件。我正在使用Azure移动应用程序服务,使用Microsoft身份验证。因此,我添加了wl.basicwl.emails

然后我读到我可以使用以下方式访问该电子邮件:

var claimsPrincipal = User as ClaimsPrincipal;
string email = claimsPrincipal.FindFirst(ClaimTypes.Email).Value;
然而,我从未尝试过上述内容,因为我遇到了另一个问题。我通过NameIdentifier来存储用户数据:

var claimsPrincipal = User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

问题是当我向登录添加更多范围时,sid正在改变。因此,我的问题是,有哪些方法可以提取一个跨越这个的标识符?

1 个答案:

答案 0 :(得分:1)

这是一个已知问题。有关如何为用户获取稳定标识符的详细信息,请参阅此Wiki帖子。

https://github.com/Azure/azure-mobile-apps-net-server/wiki/Understanding-User-Ids

以下是介绍问题的页面摘录:

  

首次发布App Service身份验证时,会根据用户的电子邮件生成sid。如果用户在谷歌,脸书和推特上使用相同的电子邮件,这对于将用户链接到两个提供商非常有用,但这意味着sid不稳定。有人可以更改他们注册的Facebook电子邮件,突然间sid会有所不同。这就是编写这个wiki页面的原因 - 展示如何生成自己的稳定用户ID。

该页面继续解释如何获取稳定标识符以及执行此类迁移所需的选项。