Spring Загрузка и SAML 2.0

Есть ли способ интегрировать SAML 2.0 в приложение Spring Boot-based? Я хотел бы реализовать свой собственный SP и общаться с удаленным IdP.

Ответ 2

Недавно я выпустил загрузочный плагин spring для этого здесь. Это в основном оболочка вокруг spring SAML безопасности, которая позволяет более дружескую конфигурацию через свойства DSL или конфигурации. Вот пример использования DSL:

@SpringBootApplication
@EnableSAMLSSO
public class SpringBootSecuritySAMLDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootSecuritySAMLDemoApplication.class, args);
    }

    @Configuration
    public static class MvcConfig extends WebMvcConfigurerAdapter {

        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
        }
    }

    @Configuration
    public static class MyServiceProviderConfig extends ServiceProviderConfigurerAdapter {
        @Override
        public void configure(ServiceProviderSecurityBuilder serviceProvider) throws Exception {
            serviceProvider
                .metadataGenerator()
                .entityId("localhost-demo")
            .and()
                .sso()
                .defaultSuccessURL("/home")
                .idpSelectionPageURL("/idpselection")
            .and()
                .logout()
                .defaultTargetURL("/")
            .and()
                .metadataManager()
                .metadataLocations("classpath:/idp-ssocircle.xml")
                .refreshCheckInterval(0)
            .and()
                .extendedMetadata()
                .idpDiscoveryEnabled(true)
            .and()
                .keyManager()
                .privateKeyDERLocation("classpath:/localhost.key.der")
                .publicKeyPEMLocation("classpath:/localhost.cert");

        }
    }
}

Это в основном весь код, который вам нужен.

Ответ 3

Вам нужно будет делать все материалы SAML в XML (удивление, удивление). Но все остальное не должно мешать, просто стандартный Springy, Booty stuff, например.

@EnableAutoConfiguration
@Configuration
@ImportResource("my-crazy-ass-saml.xml")
public class Application implements WebMvcSecurityAdapter {

    // set up security filter chain here

}

Ответ 4

Я попробовал решение @vdenotaris, но, похоже, не работает с текущим spring -boot и, таким образом, отказался от этого подхода.

Итак, в качестве альтернативного решения я использовал shibboleth для создания всего материала SAML с помощью модуля mod_shib2 в apache httpd и запустил tomcat с помощью mod_jk (mod_proxy_ajp также можно было использовать) за указанным экземпляром apache. Tomcat получает все необходимые атрибуты SAML в качестве атрибутов запроса, и мне нужно хранить idp и идентификатор пользователя в таблице обычного пользователя, чтобы подключить внутреннюю аутентификацию к внешнему (мне нужны как SAML, так и аутентификация на основе пароля).

Ответ 5

Я бы рекомендовал проверить расширение Spring SAML