尝试使用apache实现sso。在apache中添加了auth,它通过ajp在spring boot应用程序httpServletRequest.getRemoteUser()中设置用户名。
一旦添加到引导项目的spring安全依赖项无法从httpRequest获取远程用户。
@GetMapping("/sso")
public String test(HttpServletRequest request, @RequestHeader Map<String, String> headers) {
String u1 = request.getRemoteUser();
return "--" + u1 + "--" + headers.toString();
}
u1给出了在未添加spring安全依赖性时从Apache发送的用户名
在spring security config中给出所有请求的全部许可
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
}
在Apache中,从命令添加了一个用户,并在虚拟主机
中添加了以下行到auth AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
答案 0 :(得分:0)
最后有一种方法可以从具有spring security的httpRequest.getRemoteUser()中获取用户。
在spring安全性初始化之前添加了一个要调用的过滤器,并将远程用户保存在功能使用的请求范围内。
注册过滤器
@Bean
public FilterRegistrationBean registerRequestLogFilter(SSOFilter filter) {
FilterRegistrationBean reg = new FilterRegistrationBean(filter);
reg.setOrder(3);
return reg;
}
并添加了属性
security.filter-order=5
从保存的过滤器中,请求分数中的用户值稍后使用它进行身份验证。