OpenSAML的意义是什么?有没有替代品?

8
我目前正在设置SAML IDP。起初,我认为spring-security-saml会帮助我,但我发现它只能帮助设置SAML协议的SP端。
所以我想:让我们使用OpenSAML来完成吧。
这里出现了一个问题:那个库到底是干什么的? 我知道这是一个低级库,但我不明白它的意义。 我找不到好的教程或文档,感觉就像买了一些没有螺丝和说明书的宜家家具。
虽然,我看到了很多有趣的东西,比如解码器(HTTPPostDecoder),可以从HTTP请求中获取SAML对象,但我不知道是否应该手动检查此对象与IDP元数据是否匹配,或者OpenSAML是否可以自动检查它(我假设它不能)。
从那里开始,我在所有这些OpenSAML对象中迷失了方向,不知道哪些是我应该使用的,哪些是我不必使用的。
举个例子,我试图从头开始生成元数据,但我没有找到任何默认配置,可以直接使用,最终只有一行XML标记对应了10行代码,所以我不知道这个库的真正价值是什么。
有人能告诉我OpenSAML到底是做什么和不做什么吗? 是否有一些好的实践、帮助库可以包装它并真正帮助我(或任何替代品),或者有好的教程我没有找到?我认为这肯定做了一些事情,但我无法理解它做了什么以及如何做...
提前感谢您的帮助!

好书 - https://gumroad.com/l/a-guide-to-opensaml - rbrayb
你最终选择了什么?我发现自己处于类似的情况。我正在考虑使用外部认证的Shibboleth,但它也带来了一些安全问题。 - noob Mama
最后,我阅读了SAML规范,并得出结论:从零开始实现SAML是一项艰巨的工作,因此该项目已经被搁置,目前也没有重新开始的计划。要实现主要用例,需要一个优秀的团队和大量的时间来阅读规范,并进行实现,而当时我没有足够的资源。 - sjahan
1
OpenSAML 实际上非常适合正确创建带有所有属性的 XML 断言,更重要的是可以帮助正确进行所有签名。如果自己尝试正确地完成这项工作,将会非常困难。我自己使用它来创建 IdP。但是,文档可能需要改进。如果 Shibboleth 能够满足您的用例,则更容易使用,但如果不能,则需要进行大量定制,在这种情况下,OpenSAML 可能实际上更容易处理 XML 部分。但请注意 - 从头开始创建 IdP 是一项艰巨的工作。 - Kirill G.
1个回答

4

您可以阅读https://wiki.shibboleth.net/confluence/display/OpenSAML/Home,了解有关OpenSAML的信息。

OpenSAML是处理低级SAML协议内容的库。它不是IdP。 IdP还必须为您提供身份验证手段,可能还包括用户配置文件管理。

有许多可用的SAMLv2 IdP,如Shibboleth、JBoss PicketLink、ForgeRock OpenAM、Ping Federate;一些是免费的,一些是商业化的。


谢谢你的回答。我发现它真的很底层。如果文档有点面向最终用户友好,那么使用它对我来说不是问题。我基本上知道你提到的三个IDP。OpenAM被排除在外,因为我正在使用它,而且我真的讨厌它的开发方式。Ping是商业软件,所以也被排除了。我试图看一下Shibboleth,我们会看看的。你认为我可以重用SAML部分将其集成到我的IDP中吗?我还开始查看CAS服务器的SAML部分,这可能是一个好的线索! - sjahan
Shibboleth可以作为SAMLv2 IdP。如果您的意思是“重复使用SAML部分以将其集成到我的IDP中”,那么它是可行的。 - Bernhard Thalmayr
我最终想要的是一个单一的应用程序,因此我希望能够将Shibboleth IDP嵌入到我的应用程序中,而不必在我的应用程序旁安装它。 - sjahan
抱歉,我不理解使用情况。IdP和SP由同一应用程序提供? - Bernhard Thalmayr
不,只需要IDP。我希望它能够嵌入我的应用程序中,而不必安装独立的IDP。 - sjahan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接