Ben*_*tra 17 claims-based-identity azure-active-directory office365api azure-ad-graph-api
我有一个多租户ASP.NET应用程序使用OpenIdConnect和Azure AD作为Office 365的身份提供程序.当用户通过身份验证后,我收到了我的声明ClaimsPrincipal.Current.
我想识别用户并将此id引用存储在我的数据库中.我问了这个问题.有人回答说
当尝试唯一地识别用户时[NameIdentifier]应该是您的首选.
但似乎NameIdentifier声称,http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
取决于应用程序.确切地说,如果我在Azure AD中创建另一个应用程序,那么NameIdentifier对于同一个真正的 Office365用户来说,它们将是不一样的.请记住,我们可能必须创建另一个Azure AD清单(因为我们可能需要其他范围),我们应该能够找回相同的最终用户.
与此同时,我评论了另一个主张: ObjectIdentifier http://schemas.microsoft.com/identity/claims/objectidentifier
ObjectIdentifier对于给定的Office 365用户,所有Azure AD保护的应用程序似乎都是相同的.
你能准确解释这两种说法之间的区别吗?更重要的是,您是否可以确认ObjectIdentifier可以在任何Office 365订阅中将其用作用户的"通用"标识符.
准确地说,如果我在 Azure AD 中创建另一个应用程序,那么对于同一个真实的 Office365 用户来说,NameIdentifier 将不相同。
我做了一个快速测试如下:
在 AD Contoso 中注册多租户 Web 应用程序和单租户 Web 应用程序。
使用 user1@contoso.onmicrosoft.com 登录并获取两个 Web 应用程序中的名称标识符,结果发现两个应用程序中的名称标识符是相同的。所以名称标识符应该能够跨应用程序识别用户,但不能用于识别Azure AD中的用户。
对于对象标识符,它是一个 GUID,可用于识别 Azure AD 中的用户。例如,您可以使用对象标识符来查询 Azure AD 中的用户。
电源外壳:
$msolcred = get-credential
connect-msolservice -credential $msolcred
get-msoluser -ObjectId "{guid:object_identifier}"
Run Code Online (Sandbox Code Playgroud)
更重要的是,您能否确认 ObjectIdentifier 可以用作任何 Office 365 订阅中用户的“通用”标识符。
根据我的理解,对象标识符是一个 GUID,可以在 Office 365 订阅中识别用户。
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |