2014-02-05 6 views
1

Я пытаюсь создать в стороне SP с помощью OPENSAML-java в samlДолжны ли мы использовать любые методы сжатия, такие как Deflater, для <AuthnRequest> в SAML.?

Пока на процессе заметил, что Limitations Of URL Length.

Так что обязательно использовать любую технику сжатия для сообщения SAML, прежде чем я отправлю его в TestIdP.?

Если мы используем любую технику сжатия, Как может IdP будет знать, что SP использует эту технологию сжатия для снятия сжатия сообщения запроса.?

Есть ли какие-либо положения в метаданных для этого?

Примеры кодов оценены. Благодарю вас.

+1

Запросы идентификации AFAIK - запрос POST. Если вы используете GET, чтобы идентифицировать себя, я вряд ли могу себе представить, что у вас не хватит символов. – Hannes

+0

в (http://www.john-james-andersen.com/blog/programming/sample-saml-2-0-authnrequest-in-java.html) используется дефлятор. вот я смущен – mavis

ответ

2

Как Wiki состояния: сообщения протокола

SAML часто выполняются непосредственно в строке URL запроса из запроса HTTP GET. Поскольку длина URL-адресов ограничена на практике, привязка HTTP-перенаправления подходит для коротких сообщений, таких как сообщение. Более длинные сообщения (например, те, которые содержат подписанные утверждения SAML) должны передаваться через другие привязки, такие как HTTP POST Binding.

Запросы или ответы SAML, передаваемые через HTTP-перенаправление, имеют параметр строки запроса SAMLRequest или SAMLResponse, соответственно. Перед отправкой сообщение отправляется с дефляцией, base64-кодированный и URL-код, в указанном порядке. После получения процесс отменяется, чтобы восстановить исходное сообщение.

HTTP-GET пример меньше, чем 600 символов:

https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=fZFfa8IwFMXfBb9DyXvaJtZ1BqsURRC2Mabbw95ivc5Am3TJrXPffmmLY3%2FA15Pzuyf33On8XJXBCaxTRmeEhTEJQBdmr%2FRbRp63K3pL5rPhYOpkVdYib%2FCon%2BC9AYfDQRB4WDvRvWWksVoY6ZQTWlbgBBZik9%2FfCR7GorYGTWFK8pu6DknnwKL%2FWEetlxmR8sBHbHJDWZqOKGdsRJM0kfQAjCUJ43KX8s78ctnIz%2Blp5xpYa4dSo1fjOKGM03i8jSeCMzGevHa2%2FBK5MNo1FdgN2JMqPLmHc0b6WTmiVbsGoTf5qv66Zq2t60x0wXZ2RKydiCJXh3CWVV1CWJgqanfl0%2Bin8xutxYOvZL18NKUqPlvZR5el%2BVhYkAgZQdsA6fWVsZXE63W2itrTQ2cVaKV2CjSSqL1v9P%2FAXv4C

Если вы используете HTTP POST, параметры запроса идут к телу. Так что проблем нет.

Но вы действительно должны проверить, если сообщение SAMLRequest не слишком длинное.

Замечание по безопасности: поскольку с HTTP GET весь запрос и его параметры регистрируются в любом протоколе доступа к http, вы действительно должны использовать POST.

1

Связывание с переадресацией SML Saml2 явно требует, чтобы данные были сначала дефлированы, а затем закодированы в base64 и, наконец, закодированы в URL. Как требует спецификация, Idp ожидает, что таким образом будет подготовлен параметр строки запроса Saml2Request.

Насколько я понял, обычно используется привязка Http Redirect для отправки AuthnRequest в Idp, в то время как ответ всегда обрабатывается Http Post, поскольку он будет слишком большим для строки запроса.