我以前使用过很多 PHP,但我从未使用过 SAML,因为我从来不需要连接到远程服务器。几天来我一直在阅读各种教程、帖子和示例,但我仍然无处可去。我已阅读:
- 加州大学圣巴布拉分校 SAML 讲座
- OneLogin 示例和指南
- SAML 上的维基
- 关于 Auth Tokens 的 Rackspace 指南
- Fiede RnD 示例
- SAML 和 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 的东西就很容易了。谢谢你的时间; 任何努力都将不胜感激。