如何在 java 或 node 中为 SAML 创建自己的 IDP
Posted
技术标签:
【中文标题】如何在 java 或 node 中为 SAML 创建自己的 IDP【英文标题】:how to create own IDP for SAML in java or node 【发布时间】:2019-10-28 07:00:36 【问题描述】:我想创建一个可供多个应用程序使用的 SSO,最好的方法是什么。我正在浏览 SAML2.0,但我很困惑,因为我没有找到任何文章来创建自己的/自定义 SAML IDP。
1.创建自己的IDP有多可行。 2.实现SSO的最佳方式是什么
【问题讨论】:
有多种实现可用并准备好集成到您自己的代码中。但是,SO 不欢迎寻求库/框架指导的问题。 另外,考虑 OpenIDConnect 而不是 SAML2。它更容易实现。 【参考方案1】:不要尝试自己动手 - 使用受支持的解决方案。
在客户端,您需要一个SAML stack。
其中一些带有您可以安装的 IDP。
看看:
Shibboleth Azure AD - 云中的 SAML IDP SaaS 例如Auth0,Okta - 云中的 SAML IDP 带有 SAML 插件的 identityserver4 ComponentSpace - 有客户端和服务器端 Sustainsys - 有客户端和服务器端所有这些都将提供 SAML IDP。
它们还提供了良好的文档来帮助您启动和运行。
【讨论】:
【参考方案2】:问题 1:创建自己的 IDP 有多可行?
答案:GitHub 存储库中的How to build and run Shibboleth SAML IdP and SP using Docker container 提供了有关使用 Shibboleth SAML IdP 和 OpenLDAP 在 Java 中为 SAML 构建您自己的 IDP 的说明。
Shibboleth SAML IdP 负责身份联合。
OpenLDAP 负责身份验证。
问题 2:实施 SSO 的最佳方式是什么?
回答: Shibboleth IdP 已为已与 SAML SP 集成的企业应用程序实施 SSO。
(I) 我已经验证了由 Docker 运行的 Shibboleth SAML IdP(身份提供者)和 OpenLDAP 为以下企业应用程序提供的 SAML 单点登录 (SSO)。换句话说,我利用 Docker 运行的 Shibboleth SAML IdP 和 OpenLDAP 成功登录到以下企业应用程序。
Microsoft Office 365
Google G Suite
Salesforce
Dropbox
Box
Amazon AWS
OpenStack
Citrix NetScaler
VMware vCloud Director
Oracle NetSuite
(II) 我们使用 Java 开发了以前版本的 Zero-Password Authentication and Authorization System,并利用 Shibboleth IdP 为企业应用程序提供 SAML SSO。
我们在 Scala 中开发了具有可扩展性和高可用性的 Zero-Password Authentication and Authorization System 当前版本,以便在没有 Shibboleth IdP 的情况下为企业应用程序本地提供 SAML SSO。
为了在您的生产环境中快速部署 SAML IdP,强烈建议利用第三方 SAML IdP(例如 Shibboleth IdP)。这样您就有足够的时间用 Java 或其他编程语言开发自己的 SAML IdP。
(III) *** 的另一个问题"How to implement or integrate single sign on with SAML and Shibboleth" 提供了有价值的信息和讨论。
【讨论】:
【参考方案3】:问题 1:创建自己的 IDP 是否可行?
是的,这是可能的,但需要付出很多努力。
此存储库可以帮助您弄清楚如何构建自己的 IDP:A mock IDP and SP using the OpenSAML library
此存储库可以帮助您将自己的 IDP 集成到 Spring Boot 应用程序:Spring Boot, SAML, and Okta
问题 2:实施 SSO 的最佳方式是什么?
在我看来,实施 SSO 的最佳方式是使用现收现付身份服务。它可以帮助您节省精力和金钱。 Amazon、Google、Apple、Okta、Auth0、geetoPod 等有很多这样的服务。
【讨论】:
以上是关于如何在 java 或 node 中为 SAML 创建自己的 IDP的主要内容,如果未能解决你的问题,请参考以下文章
带有标准 java 应用程序的 Spring Security SAML
使用 Angular、node.js 和身份提供者的 SAML 身份验证
如何在 Node JS 中为 ActiveMQ 编写发送方应用程序