我正在使用Angular和Spring Boot构建一个带有Rest API的单页应用程序。这是我的SpringBoot应用程序:
@SpringBootApplication
@Controller
public class AptSsoAppApplication {
public static void main(String[] args) {
if ("true".equals(System.getenv("SKIP_SSL_VALIDATION"))) {
SSLValidationDisabler.disableSSLValidation();
}
SpringApplication.run(AptSsoAppApplication.class, args);
}
@EnableOAuth2Sso
@Configuration
protected static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/health").permitAll()
.anyRequest().authenticated().and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
}
Angular项目包含组件。其中一个组件是为健康检查而设计的。SpringBoot应该忽略健康组件的SSO。
我举了这个例子:https://spring.io/guides/tutorials/spring-security-and-angular-js/
对于所有Angular路由,将显示SSO身份验证页面。有人能告诉我我的代码出了什么问题吗?
问题是您的静态资源(角度代码(受到保护。您必须首先允许访问您的angular应用程序。从本质上讲,index.html需要渲染到浏览器,浏览器加载底层的角度依赖关系。
一旦完成,你就可以拥有应用程序中安全的部分和不安全的部分(进行健康检查、允许用户登录等(。
实际实现将基于您在春季如何设置应用程序。
更多信息:在SpringBoot&Spring Security应用程序