Azure Microsoft身份验证ID

Azure Microsoft身份验证ID,azure,azure-web-app-service,Azure,Azure Web App Service,我有一个有很多用户的应用程序。我现在有一个最新的决定,我想问他们的电子邮件。我正在使用Azure移动应用程序服务,带有microsoft身份验证。因此,我添加了wl.basic和wl.email 然后我读到我可以通过以下方式访问电子邮件: var claimsPrincipal = User as ClaimsPrincipal; string email = claimsPrincipal.FindFirst(ClaimTypes.Email).Value; 然而,我从未尝试过上述方法,因为

我有一个有很多用户的应用程序。我现在有一个最新的决定,我想问他们的电子邮件。我正在使用Azure移动应用程序服务,带有microsoft身份验证。因此,我添加了
wl.basic
wl.email

然后我读到我可以通过以下方式访问电子邮件:

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正在更改。因此,我的问题是,是否有某种方法可以提取一个跨越此范围的标识符?

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

以下是介绍问题的页面片段:

首次发布应用程序服务身份验证时,根据用户的电子邮件生成sid。如果两个提供商在谷歌、facebook和twitter上使用相同的电子邮件,那么这对于将用户链接到两个提供商非常有用,但这意味着sid不稳定。有人可能会改变他们在Facebook上注册的电子邮件,突然间sid就会不同了。这就是编写此wiki页面的原因——展示如何生成自己的稳定用户ID


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

好的,请澄清:通过将
网站
的应用程序设置设置设置为
true
,将版本更改为4。问题是旧的
sid
是否仍然可用?如果是这样的话,您可以毫无疑问地更改范围。然而,目前的测试似乎给了我这个问题。是否有其他
ClaimType
可以用来获取旧的
sid
?为了迁移,我建议现在不要添加此应用程序设置。您可以改为将“sid”声明视为旧ID,然后开始使用稳定的sid作为新标识。如果你把这两个值都存储在你的身份系统中,那么随着时间的推移,你可以迁移到稳定的标识符。是的,好的,所以只有缓慢的方法。我无法插入一个额外的作用域,但仍能以某种方式找到旧sid?