我使用 OpenAM 作为我的 IDP,我的 SP(angular2 SPA)基于以下共享的示例:https : //github.com/vdenotaris/spring-boot-security-saml-sample
身份验证后,我的 webapp 应该调用一些 REST 服务,这些服务通过 http-basic 身份验证(使用 spring 安全性)保护,其会话通过Spring Session进行管理。
在用户通过 OpenAM IDP 进行身份验证后,我正在尝试创建基于 spring 会话的会话。我的目的是使用这些会话与我的 http-basic-secured REST 服务进行对话。
以下是在我尝试将 spring-session 与 spring-saml 集成之前,我的 webapp 的 WebSecurityConfig 的“configure()”,这工作得很好。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.authenticationEntryPoint(samlEntryPoint());
http
.csrf()
.disable();
http
.addFilterBefore(metadataGeneratorFilter(), ChannelProcessingFilter.class)
.addFilterAfter(samlFilter(), BasicAuthenticationFilter.class);
http
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/publicUrl").permitAll()
.antMatchers("/app/**").permitAll()
.antMatchers("/error").permitAll()
.antMatchers("/saml/**").permitAll()
.anyRequest().authenticated();
http
.logout()
.logoutSuccessUrl("/");
}
Run Code Online (Sandbox Code Playgroud)
并且身份验证工作得很好。在从 IDP (OpenAM) 发出的 POST 中,我可以看到 cookie 被正确设置。例如:Set-Cookie:JSESSIONID=8DD6CDBF8079E83C8F4E7976C970BB27;路径=/;仅Http
Response
Headers …
Run Code Online (Sandbox Code Playgroud)