[英]How to identify user of azure ad user uniquly
我阅读了 azure 广告 access_token 的所有属性,但似乎没有唯一标识用户的属性。 有没有办法通过 azure 广告令牌来识别用户? https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens
您可以使用oid
或sub
声明来识别用户。
这是文档在 oid 上所说的:
Microsoft 标识平台中 object 的不可变标识符,在本例中为用户帐户。 它还可用于安全地执行授权检查并作为数据库表中的键。 此 ID 在应用程序中唯一标识用户 - 登录同一用户的两个不同应用程序将在 oid 声明中收到相同的值。 因此,在对 Microsoft 在线服务(例如 Microsoft Graph)进行查询时,可以使用 oid。 Microsoft Graph 将返回此 ID 作为给定用户帐户的 id 属性。 由于 oid 允许多个应用关联用户,因此需要配置文件 scope 才能接收此声明。 请注意,如果单个用户存在于多个租户中,则该用户将在每个租户中包含不同的 object ID - 它们被视为不同的帐户,即使用户使用相同的凭据登录每个帐户也是如此。
子声明:
令牌断言信息的主体,例如应用程序的用户。 此值是不可变的,不能重新分配或重用。 它可用于安全地执行授权检查,例如当令牌用于访问资源时,并可用作数据库表中的键。 由于主题始终存在于 Azure AD 发布的令牌中,因此我们建议在通用授权系统中使用此值。 然而,主题是成对的标识符——它对于特定的应用程序 ID 是唯一的。 因此,如果单个用户使用两个不同的客户端 ID 登录两个不同的应用程序,这些应用程序将收到两个不同的主题声明值。 根据您的架构和隐私要求,这可能需要也可能不需要。 另请参阅 oid 声明(在租户内的应用程序中确实保持不变)。
本质上,oid 声明是用户在 Azure AD 租户中的唯一标识符,也是您使用来自 Microsoft Graph API 的与用户相关的查询数据。 sub 声明也保证是唯一且不可变的,但仅限于该应用程序内。 用户在使用另一个应用程序时可能会在 sub 声明中获得不同的值。 一般来说,我使用 oid 声明。
从 v2 端点获取 oid 声明需要配置文件scope。
请注意,如果您的 API 也有望在没有用户存在的情况下处理调用您的 API 的应用程序,则它们的令牌也将包含 oid/sub 声明,但这些声明指的是租户中该应用程序的服务主体,而不是用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.