1

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

MSAL 库将一个对象交还给我,该User对象包含一个名为userIdentifier.

这是一个字符串,而不是 GUID。

文档说要使用一个称为oid唯一标识整个 Microsoft 身份平台的用户的字段。我在User.idToken.oid.

如文档所述,此值是 GUID。

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

4

2 回答 2

2

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

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

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

于 2019-11-01T06:09:26.550 回答
2

为清楚起见,建议使用该accountIdentifier属性,因为它总是被填充oid,即使在可能不可用的边缘情况下:

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

更多信息在GitHub 上

于 2020-05-29T05:57:57.427 回答