如何在 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 获取用户?的主要内容,如果未能解决你的问题,请参考以下文章