如何使用PHP生成简单的SAML请求?

如何使用PHP生成简单的SAML请求?,php,request,authorization,token,saml,Php,Request,Authorization,Token,Saml,我以前使用过很多PHP,但我从未使用过SAML,因为我从未连接到远程服务器。几天来,我一直在阅读各种教程、帖子和示例,但现在我仍然一无所获。我读过: 但仍然没有成功。我想当我读到Onelogin、SimpleSAMLphp和Shibboleth时,我觉得我的位置不对,因为我觉得下载和解压巨大的文件就像服务提供商的堆栈一样。。。在本例中,我是身份提供者,我认为这就像制作一些xml并发送它一样简单;并寻求回应。不需要这些大量的代码,但也许我错了 当我看xml时,大部分都是有意义的。例

我以前使用过很多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>

http://authority.example.com/
...
jygH5F90l
urn:oasis:name:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
我想我理解将“jygH5F901”作为“NameID”发送的过程,但是行urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport对我来说几乎没有意义。有谁能给我指一个关于如何开始的好指南,或者至少是正确的方向

我需要做的就是:

  • 获取授权令牌
  • 将授权令牌交换为访问令牌
  • 使用该访问令牌从服务提供者数据库获取信息

  • 任何帮助都将不胜感激;我对SAML完全陌生,所以我可能听起来很傻;但如果有人能把我和一个完整的指南或例子联系起来,解释这个结构,并且有更多的复制粘贴友好的工作。我只需要得到那个连接,导入数据,然后一旦我可以得到这些返回的变量,所有PHP的东西都很容易。谢谢你的时间;任何努力都将不胜感激。

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

    规格:
    技术概述:


    我警告你,手工操作和正确操作可能会有很多工作要做。为此,我建议使用应用程序设计,如

    我听说如果我已经有授权令牌,我可以使用curl在服务器链接上进行HTTP GET调用,它将提取返回的xml内容。你听说过类似的东西吗?我建议你用。。。什么?哈哈,抱歉,更新了Hey@Devon。我现在也有同样的问题。你有没有设法用PHP解决你的问题?经过两天的研究和试用,我能够通过手动向SAML服务提供正确的XML结构来获得授权令牌。现在我被令牌:D的交换所困扰,我不知道是继续手动进行还是使用库。不幸的是,我不知道该用哪个图书馆。