如何在 Java 程序中从 IdP-ADFS 获取用户?

Posted

技术标签:

【中文标题】如何在 Java 程序中从 IdP-ADFS 获取用户?【英文标题】:How do I fetch users from IdP-ADFS in Java program? 【发布时间】:2016-09-04 05:21:28 【问题描述】:

我们有一个基于 Web 的应用程序,它与 IdP 对话,并且 IdP 使用带有 SAML 的 ADFS。 我们在 IdP 和我们的服务器之间使用 Spring Security 框架,现在,我们能够在 IdP 验证用户并将用户名发送到我们的应用程序服务器(无需重新验证)。

要分配不同的角色,我们需要应用服务器上的所有用户(我们在应用级别分配权限)。

所以我的问题是如何将所有用户从 ADFS 提取到我的应用程序服务器中?

【问题讨论】:

【参考方案1】:

ADFS 位于 AD 之上。

ADFS 与用户管理没有任何关系。

因此您需要将用户迁移出 AD。

您可以使用 LDAP 命令来执行此操作,例如Howto: (Almost) Everything In Active Directory via C# 和 Everything in Active Directory via C#.NET 3.5 (Using System.DirectoryServices.AccountManagement)。

【讨论】:

【参考方案2】:

ADFS 是 SAML 身份提供程序,不是可查询的源,如 LDAP 或关系数据库。要查询完整的用户列表,提供 ADFS 服务的一方需要提供“获取所有用户”的替代解决方案。

在与 SAML IdP 集成时,SharePoint 等产品需要自定义人员选择器。这并不直接适用于您,但通常是相关的。 https://blogs.msdn.microsoft.com/kaevans/2013/05/26/fixing-people-picker-for-saml-claims-users-using-ldap/,会给你一些想法

【讨论】:

以上是关于如何在 Java 程序中从 IdP-ADFS 获取用户?的主要内容,如果未能解决你的问题,请参考以下文章

在Java中从JSON响应中获取字符串

如何在 AnyLogic 7 中从外部源获取资源容量?

如何在 Java 中从原始字节 [] 创建 BMP 文件

在 Java 中从 Receiver 获取 midi 消息

如何在 MimeMessage java 中从电子邮件中删除用户签名

如何在反应式 Java 中从 Mono<String> 获取字符串