AzureAD 在哪里存储 SCIM 端点返回的“id”属性?

如何解决AzureAD 在哪里存储 SCIM 端点返回的“id”属性?

我正在将 AzureAD 与 SCIM 端点集成。到目前为止,集成似乎有效:AzureAD 发送“POST”请求来创建用户,然后它使用他们的“id”查询/更新用户

来自 SCIM 标准 (RFC 7643) 的提醒:'id' 是

服务提供商定义的 SCIM 资源的唯一标识符

我的 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

但它们都不起作用。它们为空或不包含 SCIM id。

有谁知道该物业是否公开可用?

解决方法

您并不认为 AAD 会从 SCIM 中保存用户 ID。

您可以使用 Provision on demand 来了解它的工作原理。

简单步骤:

在 SCIM 企业应用中点击“Provision on demand”。

enter image description here

然后选择一个 AAD 用户并点击“Provision”。

执行成功后,可以看到如下内容:

enter image description here

导入用户正在从 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 Provisioning 有一个内部数据存储,不会通过任何存储该数据的外部/面向客户的 API 公开。如果服务正在评估一个它不知道 SCIM ID 值的对象,它将尝试使用过滤的 GET 来定位该对象,例如 GET /Users?filter=userName eq "user@domain.com",但一旦它定位该服务将在内部存储一条记录,说明 Azure AD 中 objectId 值为 123 的对象 X 与 ID 值为 456 的对象 Y 匹配。

要明确回答“我需要在 Azure AD 中找到此值并将其转发到其他地方”的最终目标 - 这是不可能的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?