Я реализую поток аутентификации SSO, используя SAML для веб-сервера, на котором работает tomcat. Все работает нормально при использовании привязок POST или перенаправления, но из того, что я прочитал для поддержки аутентификации SAML перед REST API, мне также нужно настроить и использовать профиль ECP.Как настроить Keycloak с профилем ECM SAML
Сначала Поправьте меня, если я ошибаюсь, но поток ECP должен быть таким:
- Клиент получает доступ к 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
)
- Клиент знает, что он должен проверить подлинность, чтобы он устанавливает требуемое ECP заголовки (
- SP видит клиент не прошел проверку подлинности и возвращает SOAP обволакивают, содержащий PAOS запрос.
- Клиент несет ответственность за отправку его в соответствующий IdP на своей потребительской службе ECP.
- МВОЙ, проблемы клиента для проверки подлинности
- МВОЙ, возвращает ответ в виде другого SOAP обволакивает, содержащий ответ SAML в своем теле
- Клиент должен отправить этот ответ СП в 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 также может быть поддерживаемым сервером для нашего решения.