У меня есть приложение, использующее среду безопасности SpringL SAML для аутентификации с IDP, и я использовал образец приложения из документации Spring-secuity-SAML в качестве отправной точки для обработки аутентификации. Это все с использованием конфигурации на основе Java.
Я пытаюсь реализовать для пользователя два рабочих процесса, начиная с сайта SP.
- пользователь выбирает логин, затем пользователь перенаправляется на страницу входа в систему IDP
- пользователь выбирает регистр, затем пользователь перенаправляется на страницу регистрации 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, но затем он начал немного теряться. Любые указатели оценены.