这里有一个问题:我想保护URI,直到获得第三方OAuth2的授权。基于http://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/annotation/web/configuration/EnableOAuth2Client.html,我有以下内容:
@Configuration
@EnableOAuth2Client
public class OAuth2Client extends OAuth2ClientConfiguration {
@Bean
public Filter filter() {
DelegatingFilterProxy f = new DelegatingFilterProxy();
f.setTargetBeanName("oauth2ClientContextFilter");
return f;
}
@Resource
@Qualifier("oauth2ClientContextFilter")
private OAuth2ClientContextFilter oauth2ClientContextFilter;
@Resource
@Qualifier("accessTokenRequest")
private AccessTokenRequest accessTokenRequest;
@Bean
public OAuth2ProtectedResourceDetails remote() {
AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
details.setUserAuthorizationUri("http://localhost2/oauth/authorize");
return details;
}
@Bean
public OAuth2RestOperations restTemplate() {
return new OAuth2RestTemplate(remote(), new DefaultOAuth2ClientContext(
accessTokenRequest));
}
}
而且
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
// Empty for now...
}
最后
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
super.configure(auth);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatchers().antMatchers("/protectedUri").and()
.authorizeRequests().requestMatchers()
.hasRole("#oauth2.hasScope('read')");
}
}
但这给了:
JAVAlang.IllegalStateException:至少需要一个映射(即authorizeRequests()。任何请求。已验证()
我尝试了好几种HttpSecurity builder的组合,但都无济于事——没有任何帮助,或者这种方法完全是不正确的?
这种做法是否完全离谱呢?
对。空的ResourceServerConfigurerAdapter
对您没有帮助。您应该配置受保护的路径,例如。
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/protectedUri").authenticated();
}
(并省略您的WebSecurityConfigrerAdapter
)。
顶部的客户端配置看起来也不正确,但与受保护的资源无关(如果您想知道如何配置客户端,请开始一个新问题)。
问题内容: 在Spring MVC中,有两个上下文。一种是由引导的应用程序上下文或全局上下文。它采用参数中提到的所有配置文件。 现在,如果您还使用Spring MVC,则需要Dispatcher Servlet,它会启动另一个容器,该容器也称为Web应用程序容器。该容器将全局容器作为父容器。 将struts1与spring集成时,只有一个上下文。Spring MVC为什么需要两个?使用spring
问题内容: 在此代码构造中: 是否可以要求至少包含一个这样的条目,以便在编译时检查?(当然,在运行时,我只能检查numbers.length。) 显然,我可以这样做: 但这不会很优雅。 我这样做的原因是要确保子类不会根本不忘记调用此构造函数,默认情况下,该构造函数将调用列表中没有数字的。在这种情况下,我想获得熟悉的错误消息:。 是否可以有另一种方法来实现相同的目标,例如将此构造函数标记为非隐式的@
我使用的是OpenAPI3,有两个查询参数,其中至少有一个是必需的,但哪个并不重要。 这在OpenAPI3中可能吗?就我所见,规范和JSON模式规范中都没有提到它。
问题内容: 运行此代码时出现4个错误,这些错误将用户的电子邮件地址添加到名为的表中称为的数据库中。 $ con = new mysqli(’localhost’,’root’,’‘,’ecommerce’); 错误是这样的: 警告:mysqli_query()至少需要2个参数,第27行给出1个 第27行: $ query = mysqli_query(“ SELECT * FROM subscri
问题内容: 有人可以给我一个Hibernate中单向@OneToOne主键映射的示例吗?我已经尝试了多种组合,到目前为止,我得到的最好的东西是: 每当Hibernate尝试自动为上述映射生成模式时,它都会尝试将主键创建为blob(而不是long)(即PaperCheque的id类型)。有人能帮帮我吗 ?如果我无法找到确切的解决方案,那么可以采取一些措施,但我希望得到任何答复。 问题答案: 您的意图
我的C#代码上有一个正则表达式,我想通过添加约束来编辑它,如果字符串不包含至少一个字母,则拒绝文本,不管是什么语言。 我的正则表达式: 有什么建议请。