Атрибуты запроса SAML в AuthnRequest
Я вроде понимаю, как должна работать базовая аутентификация SAML:
Пользовательский ресурс запроса на SP
SP отправляет запрос авторизации в IDP
IDP аутентифицирует пользователя и отправляет обратно некоторый идентификатор пользователя
SP отправляет запрос атрибута в IDP для получения дополнительной информации с помощью userId
IDP отправляет обратно атрибуты
ИП дает пользовательский ресурс
Моя проблема в том, можете ли вы как-нибудь обойти AttributeQuery. Когда я делаю запрос SAML 2.0 к моему тестируемому серверу Gluu/Shibboleth, я возвращаюсь givenName
(имя) и sn
(Фамилия). Могу ли я попросить inum
идентификатор пользователя и адрес электронной почты только в AuthnRequest?
Мой запрос довольно прост:
<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.
2 ответа
Вам нужно добавить требуемые атрибуты к освобожденным атрибутам в ваших доверительных отношениях на IdP. Afaik нет способа специально запрашивать атрибуты.
Просто для более подробной информации, время для запроса дополнительных атрибутов в качестве SP - это когда вы отправляете свои метаданные в IdP. Эти метаданные описывают вашу службу, включая конечную точку ACS, общедоступный сертификат, с которым будут подписаны ваши запросы AuthnRequests, сертификат, которым вы хотите зашифровать вашего партнера, атрибуты, которые вам требуются, ваш уникальный идентификатор объекта и т. Д. в том, что, как только вы определите, в чем нуждается ваша служба, эти метаданные не нужно менять - для ЛЮБОГО партнера. Вы можете отправить его всем, с кем сотрудничаете.
Получив эти метаданные, ваш партнер импортирует их и выполняет запрошенные вами атрибуты с информацией из своего хранилища идентификаторов, настраивает подпись, шифрование и т. Д. После того, как все сделано, они отправляют вам свои метаданные, содержащие конечные точки протокола (куда вам нужно отправить AuthnRequests и т. д.), сертификат, который может подтвердить их подпись, проверку атрибутов, которые они отправляют вам (они могут изменяться в зависимости от разговоров, которые вы должны вести с вашим партнером) и т. д.
Вы получаете эти метаданные, импортируете их в свою систему и при необходимости устанавливаете подключения к вашим приложениям.