我是SAML2的新手,我正在开发一个需要SSO的工具,但是我不知道如何去做。流程是这样的:
1)用户访问主网站,选择登录。2)用户输入登录信息并提交3)系统验证凭证,生成SAML响应,并将用户重定向到新工具以及作为POST变量的SAML响应。4)新工具解析响应,在数据库中存储/更新信息,并为用户创建活动会话。
1、2和3已经在主网站上创建了。我正在做的是4.主要开发人员为我们提供了一个SAML响应示例和一个证书。我有两个问题:
1)在测试服务器上使用SSO表单,输入服务器上的php文件的返回URL并提交表单。它让我登录并将我重定向到我的服务器上的页面。该页面的代码如下,输出进一步如下:
<?php
var_dump($_POST);
?>输出:
array(0) { }我做的是对的吗?我检查了Firefox上的Firebug,我可以在其中的某个地方找到samlresponse,但我不确定如何将其带到页面中。有什么帮助吗?
2)使用示例SAML响应,我们能够编写一个小脚本来解析示例并打印其中的2-3个属性。这是正确的方法吗,还是有更好的开源解决方案可用?
我试着阅读了SimpleSAMLPHP,OneLogin和其他几个类似的包,但它们看起来太复杂了,而我觉得我必须在这里实现的方法/解决方案要简单得多。此外,捆绑包似乎具有提供SAML的所有功能,而我只是接收和解析响应。
感谢您在高级课程中的帮助!干杯
发布于 2013-05-24 17:39:23
如果您想手动解析和处理SAML消息,OpenSAML可能是最佳选择。这是一个非常低级的库,需要大量的体力劳动。
您将需要查看SAML spec
我的书“A Guide to OpenSAML”很好地介绍了SAML和OpenSAML库。
我的博客上也有几个这样的例子。https://blog.samlsecurity.com/categories/opensaml/ https://blog.samlsecurity.com/categories/saml/
发布于 2013-05-23 14:07:16
老实说,解析和验证SAML响应并非易事。SP需要知道IdP的EntityDescriptor,IdP需要知道SP的EntityDescriptor。并且有几个绑定/配置文件。响应/断言可以是加密/签名的,这意味着您必须解密和/或验证数字签名。SAML是一个非常复杂的协议,没有简单的方法来解析/验证。
发布于 2013-07-17 16:40:04
您可以尝试使用以下链接对SAMLReponses进行编码和解码:
https://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php
您可以尝试自动化这些步骤并对其进行解析。
https://stackoverflow.com/questions/16576690
复制相似问题