我有一个使用OpenIdConnect和Azure AD作为Office 365身份提供者的多租户ASP.NET应用程序。当用户经过认证后,我会在ClaimsPrincipal.Current
中接收到我的声明。
我想要识别用户并将这个ID引用存储在我的数据库中。我发表了这个问题。 有人回答说:
当尝试唯一地标识一个用户时,[NameIdentifier] 应该是您的首选。
但似乎NameIdentifier
声明,即http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
,取决于应用程序。准确地说,如果我在Azure AD中创建另一个应用程序,则对于同一个真实的Office365用户来说,NameIdentifier
将不会是相同的。请记住,我们可能需要创建另一个Azure AD清单(因为我们可能需要其他范围),并且我们应该能够找回相同的最终用户。
与此同时,我注意到另一个声明:ObjectIdentifier
http://schemas.microsoft.com/identity/claims/objectidentifier
看起来ObjectIdentifier
对于给定Office 365用户的所有Azure AD安全应用程序都是相同的。
您能够准确地解释这两个声明之间的区别吗?更重要的是,您能够确认ObjectIdentifier
可以作为任何Office 365订阅中用户的“通用”标识符吗?