我有点了解基本 SAML 身份验证应该如何工作:
SP 处的用户请求资源
SP 向 IDP 发送身份验证请求 IDP 对
用户进行身份验证并发回一些 userId
SP 向 IDP 发送属性查询以获取带有 userId 的更多详细信息
IDP 发回属性
SP 给用户资源
我的问题是,你能以任何方式绕过 AttributeQuery。当我向我的测试 Gluu/Shibboleth 服务器发出 SAML 2.0 请求时,我会返回givenName
(firstname) 和sn
(lastname)。无论如何我可以inum
在 AuthnRequest 中请求用户 ID 和电子邮件吗?
我的要求很简单:
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="MyPrefix1457456412304" Version="2.0" IssueInstant="2016-03-08T17:00:12Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST">
<saml:Issuer>me.com</saml:Issuer>
</samlp:AuthnRequest>
我回来的请求是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_bff09cf745ea5722aac3f3ec57c0ecf3" IssueInstant="2016-03-08T17:01:06.140Z" Version="2.0">
<saml2:Issuer ....
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="sn" Name="urn:oid:2.5.4.4" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">User</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Admin</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
我阅读了规范的相关部分,似乎说服务器可以返回它真正想要的任何东西(以及它想要多少属性)?同样,我的问题是我是否可以强制 SAML Gluu/Shibboleth 服务器将特定属性作为 AuthnRequest 的一部分返回给我。