我如何执行 SSO 以 REST API 具有 Spring 安全性?
How can I do an SSO to REST API with Spring security?
我有一个由 NGINX 服务器、前端服务器和后端服务器组成的应用程序。
NGINX 和前端处理登录(我现在必须使用一些遗留代码),并且成功完成。
我需要对具有 Spring 安全性的 RESTfull API 执行 SSO。
API 在嵌入式 tomcat 8 服务器上的 Spring-boot 应用程序中是 运行。
spring-security版本为4.0.3,spring-boot版本为1.3.3。
我开始于:
@Configuration
@EnableWebSecurity()
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().permitAll();
}
}
现在我从 API 得到 401(未经授权),查看遗留代码并咨询其他开发人员(我是该组织的新手),我可以看到在使用 XML 他们使用的配置:
<authentication-manager alias="authenticationManager"/>
因此身份验证管理器只传递请求(他们在过滤器中进行其余的验证)。
我想做类似的事情,或者在这个阶段添加对 headers 中存在的数据的验证,但我找不到不适合 XML 的明确文档] 配置。
我认为这可能等同于遗留系统中使用的 XML 代码,但它不起作用:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.parentAuthenticationManager(authentication -> {
authentication.setAuthenticated(true);
return authentication;
});
}
我正在寻找对我的想法的更正或其他方法。
显然我遇到了上下文问题,这在没有身份验证管理器配置的情况下有效
我有一个由 NGINX 服务器、前端服务器和后端服务器组成的应用程序。
NGINX 和前端处理登录(我现在必须使用一些遗留代码),并且成功完成。
我需要对具有 Spring 安全性的 RESTfull API 执行 SSO。 API 在嵌入式 tomcat 8 服务器上的 Spring-boot 应用程序中是 运行。
spring-security版本为4.0.3,spring-boot版本为1.3.3。
我开始于:
@Configuration
@EnableWebSecurity()
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().permitAll();
}
}
现在我从 API 得到 401(未经授权),查看遗留代码并咨询其他开发人员(我是该组织的新手),我可以看到在使用 XML 他们使用的配置:
<authentication-manager alias="authenticationManager"/>
因此身份验证管理器只传递请求(他们在过滤器中进行其余的验证)。
我想做类似的事情,或者在这个阶段添加对 headers 中存在的数据的验证,但我找不到不适合 XML 的明确文档] 配置。
我认为这可能等同于遗留系统中使用的 XML 代码,但它不起作用:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.parentAuthenticationManager(authentication -> {
authentication.setAuthenticated(true);
return authentication;
});
}
我正在寻找对我的想法的更正或其他方法。
显然我遇到了上下文问题,这在没有身份验证管理器配置的情况下有效