Запрос SAML — объявление нескольких привязок протокола

Я внедрил поставщика услуг SAML для поддержки единого входа для веб-портала ASP.Net, который представляет собой упрощенное программное обеспечение, настроенное на сайтах клиентов и должно иметь возможность взаимодействовать с любым SAML-совместимым поставщиком удостоверений.

Страница My Assertion Consumer Service (ACS) будет принимать ответ SAML с помощью методов GET и POST.

Насколько я понимаю протокол SAML, свойство запроса SAML ProtocolBinding указывает, какие протоколы поддерживаются для ответа. В настоящее время мой запрос указывает привязку HTTP-Redirect. Однако я хотел бы заявить, что поддерживаю как HTTP-Redirect (GET), так и HTTP-POST (POST). Изучив больше документации SAML, чем я хочу повторить, я не могу найти синтаксис для объявления нескольких поддерживаемых привязок протоколов (или даже допустимо ли это делать).

Хотя я мог бы сделать это объявление настраиваемым, я бы предпочел объявить обе привязки, чтобы поставщик удостоверений работал без дополнительной настройки моего портала.

Ниже приведен пример моего запроса аутентификации. Пожалуйста, если кто-нибудь знает способ объявить как HTTP-Redirect, так и HTTP-POST для ProtocolBinding, я был бы очень признателен за ваш вклад!

<?xml version="1.0" encoding="utf-8"?>
<samlp:AuthnRequest 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    ID="[AUTHN_ID]" 
    Version="2.0"
    IssueInstant="[ISSUE_INSTANT]"
    ProtocolBinding="urn:oasis:names.tc:SAML:2.0:bindings:HTTP-Redirect"
    ProviderName="[PROVIDER_NAME]"
    AssertionConsumerServiceURL="[ACS_URL]">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
        PortalEntityID
    </saml:Issuer>
    <samlp:NameIDPolicy 
        AllowCreate="true" 
        Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
</samlp:AuthnRequest>

Заранее спасибо всем, кто может помочь!


person mtazva    schedule 07.12.2009    source источник
comment
Я предполагаю, что в итоге вы использовали другое значение, так что это не имеет значения, но похоже, что в середине ProtocolBinding в приведенном примере была небольшая опечатка (names.tc против names:tc).   -  person matt    schedule 30.11.2017


Ответы (2)


Атрибут ProtocolBinding в AuthnRequest используется для указания ожидаемой привязки, которая будет использоваться IdP при отправке XML-файла ответа SAML. HTTP-Redirect не является допустимым вариантом для использования здесь из-за возможного ограничения длины строки запроса URL; ответ SAML, особенно если он подписан, может быть довольно длинным. Я процитирую спецификацию SAML [SAMLProf]:

...the identity provider issues a <Response> message to be delivered by the user agent to the service provider. Either the HTTP POST or HTTP Artifact binding can be used to transfer the message to the service provider through the user agent. The message may indicate an error or will include (at least) an authentication assertion. The HTTP Redirect binding MUST NOT be used, as the response will typically exceed the URL length permitted by most user agents.
person JST    schedule 10.02.2010

После тщательного исследования выяснилось, что в одном запросе SAML можно объявить только одну привязку протокола.

person mtazva    schedule 09.12.2009