如何在php中反序列化SAML请求 - 无法安装LightSAML

时间:2018-03-27 04:51:00

标签: php laravel saml

我正在尝试将LightSAML https://packagist.org/packages/lightsaml/lightsaml安装到Laravel应用程序中,对HTTP POST请求进行一些非常基本的反序列化,但会收到错误:

 Your requirements could not be resolved to an installable set of packages.

 Problem 1
 - Conclusion: don't install lightsaml/lightsaml 1.3.6
 .....

Installation failed, reverting ./composer.json to its original content.

它看起来有点旧,所以不确定我是否可以让它工作 - 如果没有,是否有人可以建议更简单的反序列化方法和访问SAML请求的各个属性?

我也看过https://github.com/onelogin/php-saml,但它看起来比我需要的更多 - 我不需要使用SAML做实际的auth部分,我只需要接受一个SAML http帖子并使用它我自己定制的身份验证令牌创建的数据。

3 个答案:

答案 0 :(得分:1)

如果想法只是解码let MyUnionType myunion = match myunion with | MyInt n -> printfn "You gave me an Int (%d)" n | MyString s -> printfn "You gave me a string (%s)" s | MyTwoStrings (s1, s2) -> printfn "You gave me two strings (\"%s\", \"%s\")" s1 s2 | MyPoint (Point (x,y)) -> printfn "You gave me a point (%d, %d)" x y 数据SAMLResponse到您的终端,那么您可以轻松实现这一目标(只要&#39) ; s未加密)。

POST是base64编码的,因此您只需对其进行解码即可。在您接收数据的控制器方法中,您将执行以下操作:

SAMLResponse

现在,需要解析您刚刚解码的XML数据。鉴于文档很小,使用// Decode the data into the original XML document $xmlPayload = base64_decode($request->get('SAMLResponse')); 就足够了:

DOMDocument

这将输出如下内容:

// Load the XML document
$doc = new DOMDocument();
$doc->loadXML($xmlPayload);

// Traverse User elements
foreach ($doc->getElementsByTagName('Attribute') as $attribute) {
    var_dump($attribute->nodeName.'[@'.$attribute->getAttribute('Name').'] -> '.$attribute->nodeValue);
}

这只是一个示例,因为属性可能会更改(取决于您的Single Sign On IdP的设置方式)。

我使用Okta的有效载荷进行了测试。

答案 1 :(得分:0)

我认为该解决方案存在错误:您的要求无法解析为可安装的软件包集。我猜你的libs必须与LightSaml发生冲突。只是不相容。

也许在/Users/user/.composer或其他阻碍更新的地方都有一个composer.lock文件。

尝试以下步骤:

  1. 进入全局作曲家文件夹(C:\ Users \ your_name \ AppData \ Roaming \ Composer)
  2. 编辑了composer.json(添加到require:“your_package”:“number。*”)
  3. 在命令行中:composer global update。
  4. 正如您所写,解决方案可能会添加:

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/frostieDE/lightSAML"
        }
    ],
    
    祝你好运

答案 2 :(得分:0)

抱歉,我必须将其添加到作曲家并更新:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/frostieDE/lightSAML"
    }
],