【发布时间】:2012-12-22 17:08:43
【问题描述】:
我以前使用过很多 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 的东西就很容易了。谢谢你的时间;任何努力都将不胜感激。
【问题讨论】:
-
嘿@Devon。我现在有完全相同的问题。您是否设法解决了 PHP 的问题?经过两天的研究和反复试验,我能够通过手动向 SAML 服务提供正确的 XML 结构来获得授权令牌。现在我坚持交换令牌:D,我不知道是继续手动还是使用库。不幸的是,我不知道要使用哪个库。
标签: php request authorization token saml