作为服务提供商(SP),我编写了一个node.js服务来处理SAML2.0断言。我现在想测试这段代码。
我知道我可以使用各种基于云的服务作为我的测试身份提供商(IdP),但是这些要求我的新的,未经测试的SP端点被公开。
目前我只是简单地将手工制作的SAML2.0 Assertion发布到我的SP端点,但我想要一个更真实的测试,尤其是测试SP发起的SSO的能力。
因此我认为我需要在我的开发机器上运行本地IdP,所以我现在可以将我的所有测试保持在本地和沙盒中。
你能为我推荐一条前进的方法吗?
答案 0 :(得分:2)
您实际上不需要发布端点以便能够使用公共IDP。
SP和IDP之间的所有通信都是通过浏览器完成的(当然需要能够访问本地SP和公共IDP),或者您的SP调用IDP(使用HTTP-Artifact配置文件时)。但在通常情况下,IDP从不直接调用SP,这意味着SP可以在没有可公开访问的URL的情况下在本地运行。
可以通过这种方式配置的公共IDP之一是SSO Circle。
如果您仍希望在本地运行IDP,Shibboleth可能是您最简单的选择。
答案 1 :(得分:2)
有一个开放的Idp会回复https://stubidp.sustainsys.com免费提供的任何AuthnRequest。它允许您以简单的形式设置所需的主题名称,然后回复给SP。如果要设置自己的实例,可以在https://github.com/Sustainsys/Saml2处获得stubidp的来源。
披露声明:我是stubidp的作者,但我不会从使用它的任何人那里赚钱,它完全是作为免费服务提供的。
答案 2 :(得分:0)
同意Shibboleth - 其他人SimpleSAMLphp和(如果你有Windows Server)那么可能是ADFS。
如果您使用云路由,Azure Active Directory是另一种选择 - 尽管它目前仅支持SP启动。
答案 3 :(得分:0)
另一个选项是https://github.com/mcguinness/saml-idp。它非常简单快捷,可以进行本地测试设置(这是一个节点服务器)。我成功地使用它来使用cypress实施了一些完整的端到端SAML SSO测试。
我们有一个.net核心应用程序,如果在开发环境中运行,我基本上只会在启动时运行node server.js
。我将节点服务器的输出重定向到.net核心Web应用程序的输出,因此我们可以在应用程序的日志旁边看到SAML请求/响应。效果很好。