我使用Spring Boot开发了一个RESTful Web服务。输入URL后,将返回JSON资源。服务器端不完全符合JSON API但它可以正常工作。
现在我想通过简单的HTTP基本身份验证来保护RESTful服务。简而言之,如果客户端发送HTTP GET
以便访问
http://mycompany.com/restful/xyz
除非使用正确的Authorization basic XXXXXXXX
配置了请求,否则它将收到HTTP未经身份验证的错误。 xxxxxx是 user:pwd
我想用Spring Security做到这一点。经过一些谷歌搜索后,我可能需要创建一些类:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
....
}
@Override
protected void configure(HttpSecurity http) throws Exception {
....
}
}
我需要了解两件事:
我发现的大多数Spring Security示例都与使用Spring MVC的Web应用程序有某种关联,但我确信它可以在如上所示的场景中使用 - 一个独立的Web服务(在Tomcat中可以,但是不是网络应用程序);
任何人都可以在上述两种方法中显示一些代码片段,其效果是只允许某些user / pwd将过滤器传递给资源,
http://mycompany.com/restful/xyz
否则返回HTTP身份验证错误代码。
有人可以帮忙吗?
答案 0 :(得分:0)
你可以这样:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/restful/**").hasRole("ROLE_USER").and().httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("john").password("mypass").roles("ROLE_USER");
}
}