oid是否在AAD中的所有租户中都是唯一的?

时间:2018-11-16 22:00:49

标签: azure-active-directory

对于以下两种情况,您是否知道AAD访问令牌中的oid声明是否对AAD中的所有租户都是唯一的?

  1. 当代表用户的对象ID时;
  2. 当它是代表应用程序服务主体的对象ID时。

我对情况2特别感兴趣,因为我想知道我是否可以依靠AAD应用程序令牌中的以下组合之一来识别和授权应用程序。您对我们应该使用哪种组合有一些建议:

  1. 只有燕麦;
  2. Oid + appId;
  3. Oid + appId + tid(租户ID);
  4. 其他人。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

以下是此部分的一些参考链接:  1. oid位使用者的版权声明-Azure AD Token Reference

enter image description here

  1. Service principal entity reference in Azure AD Graph API

    enter image description here

  2. Service principal entity reference in the beta version for Microsoft Graph API

在第二个问题上,您没有过多提及如何授权服务主体的方式或情形。通常对于多租户应用程序,在完成对服务器的同意过程之前,甚至不存在服务主体。特定租户(唯一的例外是家庭租户,在其他人的租户中,需要在申请注册时立即创建服务主体,而所有其他租户都需要明确的同意程序)。

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

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

Application and service principal objects in Azure Active Directory