如何解决基于API路径的不同身份验证机制
我正在尝试根据网址路径保护如下所示的api。
- / api / key / **-基于api密钥的身份验证。
- / private-基本身份验证
- / public-没有身份验证
我为此使用了以下安全配置。
@Override
protected void configure(HttpSecurity http) throws Exception {
ApiKeyAuthFilter filter = new ApiKeyAuthFilter(API_KEY_AUTH_HEADER_NAME);
filter.setAuthenticationManager(new ApiKeyAuthManager(dataSource));
http.antMatcher("/api/key/**")
.csrf()
.disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilter(filter)
.authorizeRequests()
.anyRequest();
http
.authorizeRequests()
.antMatchers("/public**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic()
.authenticationEntryPoint(entryPoint);
}
问题是,这仅是安全的/ api / key / ***路径。当我访问/ private url时,它不会调用基本身份验证。是否可以基于URL路径进行多种身份验证?您能指出上面的配置有什么问题吗?
Spring Boot Framework版本:2.0.0.RELEASE 完整的源代码:github
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。