如何唯一识别天蓝色广告用户

时间:2020-06-17 04:36:37

标签: azure-active-directory

我阅读了天蓝色广告access_token的所有属性,但是似乎没有用于唯一标识的属性 用户。有没有办法通过天蓝色广告令牌识别用户? https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens

1 个答案:

答案 0 :(得分:1)

您可以使用oidsub声明来标识用户。

docs在oid上说的是

Microsoft身份中对象的不可变标识符 平台,在这种情况下为用户帐户。它也可以用来执行 授权检查安全并作为数据库表中的密钥。这个ID 跨应用程序唯一标识用户-两种不同 在同一用户中登录的应用程序将在中获得相同的值 oid声明。因此,在向Microsoft查询时可以使用oid 在线服务,例如Microsoft Graph。 Microsoft Graph将 返回此ID作为给定用户帐户的id属性。因为 oid允许多个应用关联用户,配置文件范围为 才能收到此索赔。请注意,如果一个用户 存在于多个租户中,用户将包含一个不同的对象 每个租户中的ID-他们甚至被视为不同的帐户 尽管用户使用相同的凭据登录到每个帐户。

以及从属权利要求:

令牌断言所依据的主体,例如 应用程序的用户。此值是不可变的,不能重新分配或 重用。它可用于安全地执行授权检查,例如 当令牌用于访问资源并可用作密钥时 在数据库表中。因为主题始终存在于 Azure AD发行的令牌,我们建议在 通用授权系统。但是,主题是 逐对标识符-对于特定的应用程序ID是唯一的。 因此,如果一个用户使用两个登录了两个不同的应用 不同的客户端ID,这些应用将收到两个不同的值 主题要求。这可能会或可能不会取决于您的 体系结构和隐私要求。另请参见oid声明(其中 在租户中的各个应用程序之间保持不变。

从本质上讲,oid声明是用户在Azure AD租户中的唯一标识符,也是从Microsoft Graph API使用与用户相关的查询数据的对象。 子声明也保证是唯一且不可变的,但仅限于该应用程序内。 使用其他应用程序时,用户在子声明中可能会获得不同的值。 通常,我使用虚空声明。

从v2端点获取oid声明需要 profile 范围。

请注意,如果还希望您的API在没有用户出席的情况下处理调用您的API的应用程序,则其令牌还将包含oid / sub声明,但这些声明是指您租户中该应用程序的服务主体,而不是用户。