我试图实现一个简单的Spring启动项目。我有几个Restendpoint,我必须以不同的方式保护它们。一个必须由基本身份验证保护,另一个必须由OAuth保护,另一个必须由自定义安全实现保护。
REST-endpoint:
从教程中,我知道我必须设置安全适配器的顺序。我的第一个意图是在十个步骤中设置顺序(例如@Order(10)
,@Order(20)
),以防我需要在两者之间添加其他安全过滤器。通过这样做,我调查了以下行为:
@订单(1)
或@订单(2)
和一个OAuth过滤器与@订单(4)
两个过滤器的工作。 @订单(3)
我收到一个错误,说,订单3已经在使用,不能配置两次。所以有一个默认的Spring安全适配器(或任何东西),它具有默认的顺序3。我想我通过添加@EnableWebSecurity
来禁用每个默认的Spring安全行为。在我没有通过谷歌找到答案后,我的问题是:
Web安全配置:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Order(10)
@Configuration
public class BasicAuthConfig extends WebSecurityConfigurerAdapter {
@Value("${security.user.password}")
private String password;
@Value("${security.user.name}")
private String username;
private static final String ROLE_ADMIN = "ADMIN";
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser(username).password(password).roles(ROLE_ADMIN);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.requestMatchers().antMatchers("/basic/**", "/") //
.and().authorizeRequests().anyRequest().authenticated() //
.and().httpBasic();
}
}
@Order(20)
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
protected static class Oauth2ServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
System.out.println("Filter called");
// @formatter:off
http.csrf().disable();
http.authorizeRequests().antMatchers("/application/**").authenticated()
// .antMatchers(GET, "/application/secure").authenticated()
.anyRequest().authenticated();
// @formatter:on
}
// offline token validator
}
这是一个老生常谈的问题,但如果有人仍然想知道问题是什么,以下是我的观察结果:
@EnableResourceServer
导入ResourceServerConfiguration
,其顺序为3
order 3
资源服务器配置器之前添加2个以上的筛选器
ResourceServerConfiguration
类不会添加任何请求匹配器,但会强制回退到anyRequest().authenticated()
)我很确定这是在一个不同的线程中处理的,但是我遇到的那些线程并不清楚。 我只是想找到一些关于如何在Spring Boot中使用安全的RESTful API的好例子或文档;使用API密钥或基本身份验证。
我想使用Spring Cloud实现OAuth2的令牌刷新。 我可以使用以下有效负载通过向发送请求来创建令牌: 但对于刷新令牌,则使用相同的路径。我还需要将用户名和密码发送到标题中,但我没有它们。我可以使用以下负载使用刷新令牌创建一个新令牌: Github代码
问题内容: Jsoup中是否可以通过基本访问身份验证从网站加载文档? 问题答案: 使用HTTP基本访问身份验证时,您需要发送标头以及一个值。 例如(在Apache Commons Codec Base64的 帮助下): (为了简便起见,省略了字符编码的明确说明,因为登录名和密码通常很简单;此外,Base64总是生成字节)
在Spring中使用基本身份验证时,我遇到了与HTTP响应标头“Access-Control-Allow-Origin”相关的问题。当我手动进行身份验证时,就像下面的代码一样(我使用的是REST): 一切正常,我收到以下HTTP响应: 如您所见,响应中出现了“Access-Control-Allow-Origin”。这里一切都好。我可以在ajax调用中捕捉到401错误。 但是,当身份验证自动执行时
问题内容: 我必须 使用 HTTP Basic身份验证从http服务器下载和解析XML文件。现在,我这样做: 但是以这种方式,我无法从具有http身份验证的服务器获取xml(或者我只是根本不知道该文档)文档。 如果您能向我展示实现我的目标的最好,最简单的方法,我将不胜感激。 问题答案: 您可以使用。例如: 这将设置默认值,并将在 所有 请求中使用。显然,当您不需要所有请求的凭据或多个不同的凭据(可
几天没有任何进展,我需要你的帮助。 使用GWT,我试图与REST服务器通信,服务器位于不同的URL上(需要CORS)<我的配置:服务器spring boot 1.3.3 客户端-GWT 1.7-restygwt 2.0.3 当我在Spring中禁用安全性时,我可以在我的GWT客户端中获取数据。 但是当我启用它时,我总是收到401个请求。REST URL请求直接在Web浏览器中工作(带有其身份验证对