Building a SAML IDP



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

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

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

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

1和4需要解析和创建SAML。您可以使用openSAML进行这些操作。5需要SP可能理解的SAML属性模式。你可以使用eduPerson。

使用SAML和SP需要了解和实现各种SAML配置文件。Web浏览器SSO是一种被广泛使用的SSO。你可以在这里阅读有关个人资料。

一旦您了解了SAML及其在流程中的适用位置,就需要了解/实现XMLSignature和使用PKI的各种加密主题。

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

如果ROI不值得那么多的开发,你可以使用"标准"IdP。

这里有一个SAML IDP列表。

这里有一个SAML堆栈列表。

添加@codebrane的答案,您是否计划同时支持SP和IDP启动?

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

相关内容

  • 没有找到相关文章

最新更新