MSAL - userIdentifier 与 idToken.oid

MSAL - userIdentifier versus idToken.oid

我正在使用 MSAL 针对 Microsoft Azure AD 验证用户并获得有效令牌。

MSAL 库返回给我一个 User 对象,其中包含一个名为 userIdentifier 的 属性。

这是字符串,不是 GUID。

文档说使用一个名为 oid 的字段来唯一标识 Microsoft Identity 平台上的用户。我在 User.idToken.oid.

下有这个 属性

如文档所述,该值是一个 GUID。

我的问题是,这是什么 User.userIdentifier 我应该使用它吗?我需要知道在数据库端存储什么以将此本地用户绑定到 Azure AD 用户。

查看源代码(https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-core/src/Account.ts),没有userIdentifier,但是有accountIdentifier。 可能是您的版本较旧,在这种情况下,这可能不正确。

// create accountIdentifier
const accountIdentifier: string = idToken.objectId ||  idToken.subject;

它是 oid 或 sub 声明,取其值。 如果你想要 oid,你应该从 Account 的 idTokenClaims 属性 中获取它。

为清楚起见,建议使用 accountIdentifier 属性,因为它会 always be populated,即使在 oid 可能不可用的极端情况下也是如此:

const accountIdentifier: string = idToken.objectId || idToken.subject;

有关 GitHub 的更多信息。