2

我是 SAML 2 的新手,我正在开发一个需要 SSO 的工具,但我不知道如何去做。这是流程:

1) 用户访问主网站并选择登录。 2) 用户输入登录信息并提交 3) 系统验证凭据,生成 SAML 响应并将用户重定向到新工具以及 SAML 响应作为 POST 变量。4) 新工具解析响应,在数据库中存储/更新信息并为用户创建活动会话。

1,2 和 3 已在主网站上创建。我正在处理的是 4。主要开发人员向我们提供了一个示例 SAML 响应和一个证书。我有 2 个问题/问题:

1) 使用测试服务器上的 SSO 表单,我将返回 URL 输入到服务器上的 php 文件并提交表单。它让我登录并将我重定向到我服务器上的页面。该页面的代码如下,输出如下:

<?php
    var_dump($_POST);
?>

输出:

array(0) { }

我做的对吗?我在 Firefox 上使用 Firebug 进行了检查,我可以在某处找到 samlresponse,但我不确定如何将它准确地带入页面。有什么帮助吗?

2) 使用示例 SAML 响应,我们能够编写一个小脚本来解析示例并打印其中的 2-3 个属性。这是正确的方法吗,还是有更好的开源解决方案可用?

我尝试阅读 SimpleSAMLPHP、OneLogin 和其他几个这样的包,但它们似乎太复杂了,而我觉得我必须在这里实现的目标可以通过更简单的方法/解决方案来完成。此外,这些捆绑包似乎具有提供 SAML 的所有功能,而我只是接收和解析响应。

感谢您在高级方面的帮助!干杯

4

4 回答 4

1

如果您想手动解析和处理 SAML 消息,OpenSAML 可能是要走的路。这是一个非常低级的库,涉及大量的体力劳动。

这是OpenSAML 网页

您需要查看SAML 规范

我的书A Guide to OpenSAML对 SAML 和 OpenSAML 库进行了很好的介绍和逐步介绍。

我的博客也有几个例子。 https://blog.samlsecurity.com/categories/opensaml/ https://blog.samlsecurity.com/categories/saml/

于 2013-05-24T09:39:22.630 回答
0

您可以使用lightsaml php SAML 数据模型库来解析/序列化 SAML 消息。如果您使用 Symfony2 框架,您也可以考虑使用SamlSPBundle。仅使用 lightsaml 接收 SAML 响应并解析它看起来像这样:

$request = new Request();
$request->setQueryString($_SERVER['QUERY_STRING']);
$request->setGet($_GET);
$request->setPost($_POST);
$request->setRequestMethod($_SERVER['REQUEST_METHOD']);

$bindingDetector = new BindingDetector();
$bindingType = $bindingDetector->getBinding($request);
$binding = $bidingDetector->instantiate($bindingType);
$samlResponse = $binding->receive($request);
于 2014-06-01T15:31:03.670 回答
0

老实说,解析和验证 SAML 响应并非易事。SP 需要知道 IdP 的 EntityDescriptor(s),IdP 需要知道 SP 的 EntityDescriptor(s)。并且有几个绑定/配置文件。并且响应/断言可以被加密/签名,这意味着您必须解密和/或验证数字签名。SAML 是一个相当复杂的协议,没有简单的方法来解析/验证。

于 2013-05-23T06:07:15.640 回答
0

您可以尝试使用以下链接对您的 SAMLReponses 进行编码和解码:

https://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php

您尝试自动执行这些步骤并解析它。

于 2013-07-17T08:40:04.390 回答