gpt4 book ai didi

azure - 哪个 Azure AD 属性(来自登录响应)在数据库中存储为 UserId?

转载 作者:行者123 更新时间:2023-12-03 05:19:18 26 4
gpt4 key购买 nike

成功登录 Azure AD(通过 MSAL 2)后,我得到以下对象:

environment:"login.windows.net"
homeAccountId:"ID_1.ID_2"
idTokenClaims:Object
aio:"xxx"
aud:"xxx"
exp:1661778482
iat:1661774582
idp:"https://sts.windows.net/ID_2"
iss:"https://login.microsoftonline.com/TENANT_ID"
name:"xxx"
nbf:1661774582
nonce:"xxx"
oid:"ID_3"
preferred_username:"xxx"
rh:"xxx"
sub:"xxx"
tid:"xxx"
uti:"xxx"
ver:"xxx"
localAccountId:"ID_3"
name:"xxx"
nativeAccountId:undefined
tenantId:"TENANT_ID"

看来according to the documentation ,如果我理解正确的话,您需要采用 idTokenClaims.oid ,它等于 localAccountId 。但我认为,如果您希望真正永久的UserId存储在数据库中,那么您应该通过Azure门户查看用户的属性,并获取其Object ID字段。我有点困惑的是,Azure 用户的对象 ID 字段也存在于返回的对象中(通过 MSAL 登录 Azure AD 时)。 对象 ID 位于 homeAccountId 字段中,即 ID_1,但由于某种原因,它后面跟着一个点和一些其他难以理解的 ID_2 ,存在于 idTokenClaims.idp 中。

请告诉我在通过 MSAL 2 授权时,在 Azure AD 用户的 CreatedBy 字段中将什么作为 UserId 正确存储在数据库中:

  1. idTokenClaims.oid,又名localAccountId
  2. homeAccountId 中的 ID_1(等于用户的对象 ID)?

最佳答案

对象 ID,即 oid 是您应该用作记录系统一部分的主要声明(如果您为多个租户提供服务,则加上租户 ID,即 tid)。

homeAccountIdlocalAccountId 是 MSAL SDK 特定术语,但它们最终映射到 ID token 中的声明 -homeAccountId 是“oid.tid” ”,而 localAccountId 只是“oid”,因为它仅与没有租户的 ADFS 一起使用。

响应负载中的 idTokenClaims 是来自 Azure AD 的实际解码 ID token ,然后 MSAL 将进一步有用的元数据添加到响应中。

另请参阅:

关于azure - 哪个 Azure AD 属性(来自登录响应)在数据库中存储为 UserId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73534218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com