5

我以前使用过很多 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 的东西就很容易了。谢谢你的时间; 任何努力都将不胜感激。

4

2 回答 2

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

于 2013-01-08T20:25:35.407 回答
0

如果你要去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 共享您的公钥以进行识别。

于 2021-09-23T16:28:14.813 回答