Azure active directory 在AAD的所有租户中oid是唯一的吗?

Azure active directory 在AAD的所有租户中oid是唯一的吗?,azure-active-directory,Azure Active Directory,您知道AAD访问令牌中的oid声明是否保证在以下两种情况下在AAD中的所有租户中都是唯一的: 当它是表示用户的对象id时 当它是表示应用程序的服务主体的对象id时 我对案例2特别感兴趣,因为我想知道我是否可以依赖AAD应用程序令牌中的以下组合之一来识别和授权应用程序。您对我们应该使用什么组合有何建议: 单独使用Oid Oid+appId Oid+appId+tid(租户Id) 其他的 谢谢大家! 要回答第一个问题,oid声明或ObjectId属性是不可变的,也是唯一的,因此它永远不会更改,也不会

您知道AAD访问令牌中的oid声明是否保证在以下两种情况下在AAD中的所有租户中都是唯一的:

  • 当它是表示用户的对象id时
  • 当它是表示应用程序的服务主体的对象id时
  • 我对案例2特别感兴趣,因为我想知道我是否可以依赖AAD应用程序令牌中的以下组合之一来识别和授权应用程序。您对我们应该使用什么组合有何建议:

  • 单独使用Oid
  • Oid+appId
  • Oid+appId+tid(租户Id)
  • 其他的

  • 谢谢大家!

    要回答第一个问题,oid声明或ObjectId属性是不可变的,也是唯一的,因此它永远不会更改,也不会唯一地标识相关的目录对象

    仅关于用户对象的oid声明的特别说明。。如果一个用户存在于多个租户中,则该用户将在每个租户中包含不同的对象ID-它们被视为不同的帐户,即使用户使用相同的凭据登录到每个帐户

    以下是本部分的一些参考链接: 1. <代码>oid用户索赔-

  • 关于第二个问题,您没有提到过很多关于如何或在什么场景中授权服务主体的内容。通常,对于多租户应用程序,在对特定租户执行同意流程之前,服务主体根本不存在(唯一的例外是家庭租户,其中服务主体在应用程序注册时创建正确,对于所有其他租户,需要显式同意流程)

    假设已完成同意流程,此租户存在服务主体,并且您只是使用传入令牌的声明在某些应用程序中授权/验证呼叫,那么也可以查看appid和tid声明,只是为了从逻辑上了解这是哪个Azure AD应用程序,以及租户是否有效。因此,根据您的选择,这将是第三个组合

    如果您还没有接触到多租户应用程序的应用程序/服务主体关系,那么这里有一本很好的读物