Spring-Security-SAML: как перейти непосредственно к входу в систему IDP или зарегистрировать точки входа из SP - PullRequest
0 голосов
/ 14 июня 2019

У меня есть приложение, использующее среду безопасности SpringL SAML для аутентификации с IDP, и я использовал образец приложения из документации Spring-secuity-SAML в качестве отправной точки для обработки аутентификации. Это все с использованием конфигурации на основе Java.

Я пытаюсь реализовать для пользователя два рабочих процесса, начиная с сайта SP.

  1. пользователь выбирает логин, затем пользователь перенаправляется на страницу входа в систему IDP
  2. пользователь выбирает регистр, затем пользователь перенаправляется на страницу регистрации IDP

В обоих случаях пользователь будет возвращен к SP с ответом аутентификации.

Случай 1 работает нормально. В настоящее время у пользователя есть возможность зарегистрироваться один раз на сайте IDP, но я пытаюсь заставить пользователя перейти непосредственно на страницу регистрации IDP по ссылке на сайте SP.

Точка входа в настоящее время получена из метаданных IDP и представляет собой URL-адрес в форме https: //..../sso. Я знаю, что точка входа https: //..../sso? Registration = true отправит меня прямо на страницу регистрации, но я не уверен, смогу ли я переопределить точку входа в метаданных ,

Вначале я попытался расширить цепочку фильтров безопасности новой записью saml / register, но не знаю, куда идти.

public FilterChainProxy samlFilter() throws Exception {
        List<SecurityFilterChain> chains = new ArrayList<>();
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/login/**"),
                samlEntryPoint()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/register/**"),
                samlEntryPoint()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/logout/**"),
                samlLogoutFilter()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/metadata/**"),
                metadataDisplayFilter()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SSO/**"),
                samlWebSSOProcessingFilter()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SSOHoK/**"),
                samlWebSSOHoKProcessingFilter()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SingleLogout/**"),
                samlLogoutProcessingFilter()));
        chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/discovery/**"),
                samlIDPDiscovery()));
        return new FilterChainProxy(chains);
    }

Посмотрел, смогу ли я расширить класс SAMLEntryPoint и изменить точку входа IDP, если используется URL-адрес saml / register, но затем он начал немного теряться. Любые указатели оценены.

...