如何使用PHP发出简单的SAML请求?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP发出简单的SAML请求?相关的知识,希望对你有一定的参考价值。
我之前使用过很多php,但我从未使用过SAML,因为我从来没有连接到远程服务器。我已经阅读了几天的各种教程,帖子和示例,现在我仍然没有在哪里。我已阅读:
- UC Santa Barbra Lecture on SAML
- OneLogin example and guide
- Wiki on SAML
- Rackspace guide on Auth Tokens
- Fiede RnD Example
- Getting started SAML and PHP
但仍然没有成功。我想当我在阅读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对我来说几乎没有任何意义。有人可以请我指点如何开始或至少在正确的方向。
我需要做的就是:
- 获取授权令牌
- 交换访问令牌的授权令牌。
- 使用该访问令牌从服务提供商数据库获取信息。
任何帮助将不胜感激;我是SAML的新手,所以我可能听起来很愚蠢;但是,如果只有任何人可以将我链接到一个完整的指南或示例解释结构,并有更多的复制粘贴友好的工作。我只需要获得该连接,导入数据然后一旦我可以获得这些返回的变量后所有PHP的东西很容易。谢谢你的时间;我们将非常感谢任何努力。
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一样为此目的使用应用程序设计
以上是关于如何使用PHP发出简单的SAML请求?的主要内容,如果未能解决你的问题,请参考以下文章