我使用的是spring boot 2.1.4,它依赖于执行器。我想为执行器和我的应用程序配置单独的身份验证和授权机制。我阅读了多个HttpSecurity,并将我的WebSecurityAdapter配置如下:
@Configuration
public class ProvisioningServiceSecurityConfiguration {
@Value("${actuator.user.name}")
private String actuatorUserName;
@Value("${actuator.password}")
private String actuatorPassword;
@Value("${actuator.role}")
private String actuatorRole;
@Bean
public UserDetailsService userDetailsService() throws Exception {
// ensure the passwords are encoded properly
UserBuilder users = User.withDefaultPasswordEncoder();
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(users.username("user").password("password").roles("ADMIN").build());
manager.createUser(
users.username(actuatorUserName).password(actuatorPassword).roles(actuatorRole).build());
return manager;
}
@Configuration
@Order(1)
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/locations/**")
.antMatcher("/organizations/**")
.antMatcher("/productTypes/**")
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
@Configuration
@Order(2)
public static class ActuatorWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/manage/**")
.authorizeRequests()
.anyRequest().hasRole("ACTUATOR_ADMIN")
.and()
.httpBasic();
}
}
/*@Configuration
public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin();
}
}*/
}
注意:我暂时禁用了表单登录
当我运行卷曲请求时
curl -XGET http://localhost:9797/provisioningService/organizations/all
我能看到输出。似乎Spring的安全感从未存在过。当我启用表单登录时,我会看到spring登录屏幕。我观察到的另一个行为是,如果我将/位置的用户名和密码与执行器用户名和密码交换,我仍然会得到有效的响应。
我知道表单登录更像是一种退路,但我想禁用表单登录(可能我们会转移到cas),并仅基于spring security httpBasic使用身份验证和授权。我无法理解我所犯的错误。
最后,我的要求是:
1)只有当用户名密码为用户和密码时,才能访问对 /organizations或 /locations等的请求
2) 只有当用户名、密码和角色与致动器用户名和密码匹配时,才能访问致动器api请求/管理。
3) 任何其他API都可以通过Tall/form登录
我该如何实现这一目标?
1) Spring Security有一个功能,可以通过权限过滤(认证后)来控制访问,但没有功能可以根据登录所需的信息进行过滤。您需要业务逻辑来验证您在登录期间是否试图使用相应的ID和密码登录。
2) 如上所述,不提供ID和密码的访问控制。我建议只为您请求的两个帐户创建权限。
3) 。蚂蚁匹配器(“/form”)。permitAll()
如果未调用super.paint组件父方法,则JPanel.set后台方法不执行任何操作(尽管属性是)。 我在这里阅读了很多关于这个问题的类似问题,在每一个问题中,我都只找到了没有解释的解决方案,这有助于我理解为什么在将JPanel添加到JFrame之前编写方法时会改变JPanel的背景色,而当在
我是Python初学者。我对Python中的正则表达式有所了解。例如:\d指的是匹配0个或更多的数字。 上面的表达式-第3行-在做什么?更具体地说,写有什么意义?
问题内容: 对于没有JS经验的人,您对学习Node.js有什么建议? 我在论坛上阅读了很多有关事件驱动,非阻塞,异步,回调等内容的信息,但我不知道那是什么! 在哪里可以学习基础知识,以便理解所有术语以及将来的node.js? 谢谢! 问题答案: 您提到的概念(事件驱动,非阻塞,异步,回调)不是特定于JavaScript的,在更一般的上下文中理解它们非常有价值。它们都围绕着优雅地处理我们无法控制的资
问题内容: 我的教授指示我在页面上进行自我介绍,就好像我是一个对象一样,我必须解决三件事: 1)对象状态,2)行为和3)身份。 但是,我仍然很困惑如何去做这样的事情。(我已经阅读了必须解决的三个属性,但是我不知道如何将其应用于一个人)。 例如,有人告诉我狗的状态,名称和颜色等。以及行为,例如走路,吠叫或摇尾巴。 所以我会做类似的事情: 还是我在这里得到一个完全错误的想法? 问题答案: 对象的特征是
问题:给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 您可以假设每个输入都有一个精确的解决方案,并且您可以不使用相同的元素两次。 例子: 给定nums=[2,7,11,15],target=9, 因为Nums[0]Nums[1]=2 7=9,返回[0,1]。 使用for循环后,我无法理解这些步骤。我是Python新手,请有人帮助我。
每次我运行< code>pip时,都会出现以下警告。 警告:旧脚本包装程序正在调用pip。这将在未来版本的pip中失败。请看https://github.com/pypa/pip/issues/5599寻求解决潜在问题的建议。为了避免这个问题,您可以使用“-m pip”调用Python,而不是直接运行pip。 请帮我理解一下。Pip警告 编辑1。我尝试重新安装pip,但警告仍然存在。此外,我还附上