2016-11-24 15 views
2

Я реализую поток аутентификации SSO, используя SAML для веб-сервера, на котором работает tomcat. Все работает нормально при использовании привязок POST или перенаправления, но из того, что я прочитал для поддержки аутентификации SAML перед REST API, мне также нужно настроить и использовать профиль ECP.Как настроить Keycloak с профилем ECM SAML

Сначала Поправьте меня, если я ошибаюсь, но поток ECP должен быть таким:

  1. Клиент получает доступ к API SP REST
    • Клиент знает, что он должен проверить подлинность, чтобы он устанавливает требуемое ECP заголовки (Accept: application/vnd.paos+xml и PAOS: urn:liberty:paos:2003-08;urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp)
  2. SP видит клиент не прошел проверку подлинности и возвращает SOAP обволакивают, содержащий PAOS запрос.
  3. Клиент несет ответственность за отправку его в соответствующий IdP на своей потребительской службе ECP.
  4. МВОЙ, проблемы клиента для проверки подлинности
  5. МВОЙ, возвращает ответ в виде другого SOAP обволакивает, содержащий ответ SAML в своем теле
  6. Клиент должен отправить этот ответ СП в ECP/SOAP утверждение потребителя служба

проблема в том, все это работает до шага 6. на этом этапе у меня есть проблема, что Тело охваывать ответ содержит атрибут назначения, который указует на POST утверждения обслуживания потребителей из SP. Этот атрибут назначения устанавливается с помощью keycloak и не соответствует фактической службе ECP, на которую я хочу отправить ответ. Библиотека SAML, которую мы используем, является opensaml, и она проверяет URI запроса на этот атрибут Destination и, если они не соответствуют ему, генерирует исключение org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint.

Я понимаю, почему это исключение выбрасывается, но не может понять, как я могу настроить Keycloak с помощью службы ECP/SOAP для SP. В консоли администратора Keycloak я могу настроить URL-адреса для SSO POST/Redirect и SLO POST/Redirect, но ничего о ECP.

В настоящее время я настраиваю другой IdP, но я действительно хотел бы убедиться, что Keycloak также может быть поддерживаемым сервером для нашего решения.

ответ

-1

Не можете ли вы просто прочитать пафос: запросить ответКонкурсURL и отправить ответ idp на этот URL-адрес?

По крайней мере, так мне удалось это сделать.