AzureAD 在哪里存储 SCIM 终结点返回的 "id" 属性?
Where does AzureAD store the "id" attribute returned by a SCIM endpoint?
我正在将 AzureAD 与 SCIM 端点集成。到目前为止,集成似乎有效:AzureAD 发送“POST”请求来创建用户,然后 queries/updates 用户使用他们的 'id'.
来自 SCIM 标准 (RFC 7643) 的提醒:'id' 是
A unique identifier for a SCIM resource as defined by the service provider
我的 SCIM 端点在用户首次创建时生成此唯一 ID。它按照标准要求在回复中将此 ID 发送到 AzureAD。我知道 AzureAD 将 ID 存储在某处,因为它会在后续请求中使用它。
我的问题:此 ID 存储在 AzureAD 中的什么位置?我需要阅读它,所以我可以将它转发到其他地方。使用 Graph Explorer 我尝试了很多属性:
https://graph.microsoft.com/v1.0/me?$select=id,userPrincipalName,extensions,employeeId,externalUserState,identities,externalId
但其中 none 有效。它们为空或不包含 SCIM id。
有谁知道 属性 是否公开可用?
AAD 不会像您认为的那样从 SCIM 中保存用户 ID。
您可以使用 Provision on demand 了解其工作原理。
简单步骤:
在 SCIM 企业应用程序中单击“按需提供”。
然后 select 一个 AAD 用户并单击“配置”。
执行成功后,您将可以看到如下内容:
导入用户 正在从 Azure Active Directory 检索用户。
确定用户是否在范围内通过评估每个范围过滤器来确定用户是否在范围内。
在源系统和目标系统之间匹配用户 正在从 SCIM 检索用户并将其与步骤 1 中的 AAD 用户匹配。这是 点 你以前不知道的。 AAD将Get User by query这一步。
GET /Users?filter=userName eq "{userName}"
然后返回SCIM的用户id(如上图所示)
执行操作 使用步骤 3 中的 ID 更新 SCIM 中的用户。
所以 AAD 不存储来自 SCIM 的 ID。它首先在 SCIM 中查询用户以获取 ID,然后使用此 ID 向 SCIM 端点发送更新请求。
Azure AD 配置有一个内部数据存储,不会通过存储它的任何 external/customer-facing API 公开。如果该服务正在评估一个它不知道 SCIM ID 值的对象,它将尝试使用 GET /Users?filter=userName eq "user@domain.com" 等过滤 GET 来定位该对象,但一旦它已找到该对象,该服务将在内部存储一条记录,说明 Azure AD 中 objectId 值为 123 的对象 X 与 ID 值为 456 的对象 Y 匹配。
具体回答您的最终目标“我需要在 Azure AD 中找到这个值并将其转发到其他地方”- 这是不可能的。
我正在将 AzureAD 与 SCIM 端点集成。到目前为止,集成似乎有效:AzureAD 发送“POST”请求来创建用户,然后 queries/updates 用户使用他们的 'id'.
来自 SCIM 标准 (RFC 7643) 的提醒:'id' 是
A unique identifier for a SCIM resource as defined by the service provider
我的 SCIM 端点在用户首次创建时生成此唯一 ID。它按照标准要求在回复中将此 ID 发送到 AzureAD。我知道 AzureAD 将 ID 存储在某处,因为它会在后续请求中使用它。
我的问题:此 ID 存储在 AzureAD 中的什么位置?我需要阅读它,所以我可以将它转发到其他地方。使用 Graph Explorer 我尝试了很多属性:
https://graph.microsoft.com/v1.0/me?$select=id,userPrincipalName,extensions,employeeId,externalUserState,identities,externalId
但其中 none 有效。它们为空或不包含 SCIM id。
有谁知道 属性 是否公开可用?
AAD 不会像您认为的那样从 SCIM 中保存用户 ID。
您可以使用 Provision on demand 了解其工作原理。
简单步骤:
在 SCIM 企业应用程序中单击“按需提供”。
然后 select 一个 AAD 用户并单击“配置”。
执行成功后,您将可以看到如下内容:
导入用户 正在从 Azure Active Directory 检索用户。
确定用户是否在范围内通过评估每个范围过滤器来确定用户是否在范围内。
在源系统和目标系统之间匹配用户 正在从 SCIM 检索用户并将其与步骤 1 中的 AAD 用户匹配。这是 点 你以前不知道的。 AAD将Get User by query这一步。
GET /Users?filter=userName eq "{userName}"
然后返回SCIM的用户id(如上图所示)
执行操作 使用步骤 3 中的 ID 更新 SCIM 中的用户。
所以 AAD 不存储来自 SCIM 的 ID。它首先在 SCIM 中查询用户以获取 ID,然后使用此 ID 向 SCIM 端点发送更新请求。
Azure AD 配置有一个内部数据存储,不会通过存储它的任何 external/customer-facing API 公开。如果该服务正在评估一个它不知道 SCIM ID 值的对象,它将尝试使用 GET /Users?filter=userName eq "user@domain.com" 等过滤 GET 来定位该对象,但一旦它已找到该对象,该服务将在内部存储一条记录,说明 Azure AD 中 objectId 值为 123 的对象 X 与 ID 值为 456 的对象 Y 匹配。
具体回答您的最终目标“我需要在 Azure AD 中找到这个值并将其转发到其他地方”- 这是不可能的。