Запрос SAML - объявить привязки нескольких протоколов - PullRequest
4 голосов
/ 08 декабря 2009

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

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

Как я понимаю протокол SAML, свойство SAML Request 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>

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

Ответы [ 2 ]

4 голосов
/ 10 февраля 2010

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

... поставщик удостоверений выдает сообщение , которое пользовательский агент доставляет поставщику услуг. Для передачи сообщения поставщику услуг через пользовательский агент может использоваться привязка HTTP POST или HTTP-артефакт. Сообщение может указывать на ошибку или включать (по крайней мере) утверждение аутентификации. Привязка HTTP Redirect НЕ ДОЛЖНА использоваться, поскольку ответ обычно превышает длину URL-адреса, разрешенную большинством пользовательских агентов.
0 голосов
/ 09 декабря 2009

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

...