【问题标题】:How to make a simple SAML request with PHP?如何使用 PHP 发出简单的 SAML 请求?
【发布时间】:2012-12-22 17:08:43
【问题描述】:

我以前使用过很多 PHP,但我从未使用过 SAML,因为我从来不需要连接到远程服务器。几天来我一直在阅读各种教程、帖子和示例,但我仍然无处可去。我已阅读:

但仍然没有成功。我认为当我阅读 Onelogin、SimpleSAMLphp 和 Shibboleth 时,我觉得自己来错地方了,因为我觉得下载和解压大文件,因为堆栈是服务提供商的……在这种情况下,我是身份提供商我认为这就像制作一些 xml 并将其发送出去一样简单;并寻找回应。不需要这些大量的代码,但也许我错了。

当我查看 xml 时,大部分都是有道理的。例如:

<saml:Assertion
Version="2.0"
ID=“_34234se72”
IssueInstant="2005-04-01T16:58:33.173Z">
 <saml:Issuer>http://authority.example.com/</saml:Issuer>
 <ds:Signature>...</ds:Signature>
 <saml:Subject>
     <saml:NameID format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
        jygH5F90l
    </saml:NameID>
 </saml:Subject>
  <saml:AuthnStatement
      AuthnInstant="2005-04-01T16:57:30.000Z">
        <saml:AuthnContext>
          <saml:AuthnContextClassRef>
            urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
          </saml:AuthnContextClassRef>
        </saml:AuthnContext>
   </saml:AuthnStatement>
</saml:Assertion>

我想我理解将“jygH5F901”作为“NameID”发送的过程,但行 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 对我来说几乎没有意义。有人可以指点我一个很好的指南,告诉我如何开始或至少朝着正确的方向发展。

我需要做的就是:

  1. 获取授权令牌
  2. 用授权令牌交换访问令牌。
  3. 使用该访问令牌从服务提供商数据库获取信息。

任何帮助将不胜感激;我对 SAML 完全陌生,所以我可能听起来很愚蠢;但是,如果任何人都可以将我链接到解释结构并具有更多复制粘贴友好工作的详尽指南或示例。我只需要获得该连接,然后导入数据,然后一旦我可以掌握这些返回的变量,所有 PHP 的东西就很容易了。谢谢你的时间;任何努力都将不胜感激。

【问题讨论】:

  • 嘿@Devon。我现在有完全相同的问题。您是否设法解决了 PHP 的问题?经过两天的研究和反复试验,我能够通过手动向 SAML 服务提供正确的 XML 结构来获得授权令牌。现在我坚持交换令牌:D,我不知道是继续手动还是使用库。不幸的是,我不知道要使用哪个库。

标签: php request authorization token saml


【解决方案1】:

SAML 相当复杂,如果您要手动生成 XML,我强烈建议您阅读 SAML 并查看规范。我建议先查看规范中的技术概述。

规格:http://saml.xml.org/saml-specifications
技术概述:https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf

我警告您,手动执行此操作并正确执行可能需要大量工作。我建议为此目的使用应用程序设计,例如 shibboleth

【讨论】:

  • 我听说如果我已经有一个授权令牌,我可以以某种方式使用 curl 在服务器链接上进行 HTTP GET 调用,它会提取返回的 xml 内容。你听说过类似的事情吗?
  • 我建议使用类似...什么?
  • 哈哈,抱歉,更新中
【解决方案2】:

如果你要去IDP那么请参考这个文档,我已经完成了与LIGHTSAML库的连接。

图书馆参考-

  1. https://www.lightsaml.com/LightSAML-Core/Cookbook/
  2. https://www.lightsaml.com/LightSAML-Core/Cookbook/How-to-send-SAML-message/
  3. https://www.lightsaml.com/LightSAML-Core/Cookbook/How-to-make-Response/

注意:- 请仅参考此文档,确保您与 sp 共享您的公钥以进行识别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 2017-10-27
    • 2016-09-18
    • 2016-07-04
    • 1970-01-01
    • 2017-04-30
    • 2012-04-21
    • 2014-11-11
    相关资源
    最近更新 更多