2

我们正计划建立我们自己的 SAML IDP。我有几个问题:

  1. 建一个有意义吗?
  2. 如果是,方法是什么?我没有看到任何用于 SAML 的 Java 库。不能使用 spring-security-saml,因为它支持集成第三方 IDP,而不是构建一个。
4

2 回答 2

2

SAML作为一个从头开始构建 IdP 的人来说,用 Java 构建一个IdP 主要涉及以下内容:

  1. 侦听 SAML 请求的服务器应用程序,通常在端口 443 上。您可以为此使用spring-boot
  2. 向 IdP 管理的用户提供身份验证页面的服务器代码。LDAP 是一种常用的用户身份验证方式。
  3. 用于为经过身份验证的用户提取属性的服务器代码。这可能是一个 LDAP 查找,以查找名字、姓氏、电子邮件等属性。
  4. 服务器代码决定哪些属性可以发布给请求的 SP。您将为此使用 SP entityID
  5. 服务器代码将用户属性(例如从 LDAP)转换为 SAML 属性并发送到 SP。

1 和 4 需要解析和创建SAML. 您可以对这些使用openSAML。5 需要一个SAMLSP 可能理解的属性模式。您可以为此使用eduPerson

SAMLSP 合作需要了解和实施各种SAML配置文件。Web 浏览器 SSO 是一种使用频率很高的方法。您可以在此处阅读有关配置文件的信息。

一旦您了解SAML并了解它在流程中的位置,您就需要使用PKI来理解/实施XMLSignature和各种加密主题。

一旦您有了一个有效的、经过测试的 IdP 实施,您就需要能够解析SAML 元数据 (PDF),以使用其公钥证书和元数据中的各种其他 URL 来验证 SP。您还需要使 SP 元数据保持最新,并创建 IdP 元数据以发送给 SP,以便它可以验证您SAML Response将签署的 .

如果 ROI 不值得这么多的开发,您可以使用“标准” IdP

于 2020-03-30T09:43:13.673 回答
0

这里有一个 SAML IDP 列表。

这里有一个 SAML 堆栈列表。

并添加@codebrane 答案,您是否计划同时支持 SP 和 IDP 发起?

但总的来说,不要。使用现成的产品或至少使用可靠的 SAML 堆栈库。

于 2020-03-30T19:30:03.180 回答