AAD:如何在 Web API 中唯一标识用户?



ASP.NETWeb API 中,我需要能够识别具有唯一 id 的用户,以便我可以在另一个数据库中引用他们。所有用户都在Azure Active Directory上。我不想要会随着时间的推移而改变的东西(比如 SID(。

我尝试使用这样的Membership获取用户 Guid,但我发现 Azure Active Directory 不支持成员资格。

我发现 IdentityExtensions.GetUserId(( 是这样用的:User.Identity.GetUserId()。生成的 id 似乎既不是 Guid 也不是 SID。但是,它似乎对每个用户都是唯一的。

是否可以使用User.Identity.GetUserId()唯一标识 AAD 用户?如果没有,正确的方法是什么?

User.Identity.GetUserId(( 可以用于唯一标识 AAD 用户吗?

是的,如果它使用的是 ClaimTypes.NameIdentifier。

你怎么知道(除了 F12/ctrl+F12(?

默认情况下,它应该使用 ClaimTypes.NameIdentifier,前提是你使用的是 ASP Identity 或类似的代码(旧成员资格,基本上是Microsoft实现(。

<ClaimsIdentityOptions.cs>
/// <summary>
/// Gets or sets the ClaimType used for the user identifier claim.
/// </summary>
/// <remarks>
/// This defaults to <see cref="ClaimTypes.NameIdentifier"/>.
/// </remarks>
public string UserIdClaimType { get; set; } = ClaimTypes.NameIdentifier;

IdentityOptionsTest 中有一个名为 VerifyDefaultOptions 的单元测试.cs可用于确认默认值。 导航到实现确实是确定的唯一方法。但是,如果您没有更改默认值,则不需要它。

关于名称标识符的原始解释在这里

ASP 标识源代码

最新更新