尝试在调用以下命令时保护spring Actuctor服务/管理上下文路径:
http://localhost:9091/manage/metrics
在yalm.properties中使用此配置
管理:端口:9091地址:127.0.0.1上下文路径:/manage security:enabled:true角色:admin
。
带有安全执行器服务层Git分支
Spring Security配置:
'@override protected void configure(HttpSecurity http)引发异常{
http.authorizeRequests().antMatchers("/pizzas","/info","/addPizza").hasAnyRole("USER","ADMIN").and().authorizeRequests().antMatchers("/users","/addUser").hasRole("ADMIN").and().authorizeRequests().antMatchers("/static/**","/logout","/login").permitAll();
http.formLogin().loginPage("/login").failureUrl("/login?error").permitAll();
http.logout().logoutSuccessUrl("/?logout").deleteCookies("remember-me").permitAll();
http.sessionManagement().maximumSessions(1).
expiredUrl("/?expired").maxSessionsPreventsLogin(true).and()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);
}
/**
* Configure global security with Bccyptenoncder and custom userDetailService with Spring Security
* @param auth
* @throws Exception
*/
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsServiceImpl).passwordEncoder(passwordEncoder());
}
/**
* Bcrypt password encoding configuration, more info at http://www.baeldung.com/spring-security-registration-password-encoding-bcrypt
* @return
*/
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
'
春靴团队已经解决了我这个问题。我在这里分享解决方案:
同源政策
您不能在执行器安全性中使用主Spring应用程序的登录页面。原因是cookie将与应用程序的域+端口+上下文路径相关联。这是同源政策的一部分
为了使用此配置,您需要在管理应用程序中设置一个登录页面。为此,您只需要在请求/login时返回一个HTML表单。但是,我不确定您将如何在引导管理应用程序中做到这一点。也许@philwebb或@dsyer可以详细说明如何做到这一点。
管理应用程序的不同安全配置
或者,您可以为管理应用程序创建单独的安全配置,允许使用基本身份验证进行身份验证。为此,您需要创建一个类似于以下内容的安全配置:
@Order(0)
@Configuration
public class ManagementSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestMatchers()
.requestMatchers(request -> "/manage".equals(request.getContextPath()))
.and()
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
您可以更简洁地重写配置,如:
http
.authorizeRequests()
.antMatchers("/pizzas","/info","/addPizza").hasAnyRole("USER","ADMIN")
.antMatchers("/users","/addUser").hasRole("ADMIN")
.antMatchers("/static/**","/logout","/login").permitAll()
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/?logout")
.deleteCookies("remember-me")
.permitAll();
您可以考虑阅读Spring Security Java Config Preview:Readability,了解如何格式化配置以更好地阅读它的详细信息。
我在我的应用程序中使用了Spring-Boot1.3.1和Spring-Boot-Actutor。我使用作为中的父级。 为了禁用安全性,我在中添加了2个条目。 它仍然没有禁用基本的安全性。当我在本地Tomcat中启动应用程序时,我看到日志文件中的默认密码。
我添加了执行器依赖 按照教程中的建议 但是当我点击时,它不会给出预期的结果。上面写着 Spring Boot版本为1.5.4。和Java1.8需要做哪些附加设置?
这是我的安全配置代码: 但在编译spring时,仍在为我生成密码。 我通过print语句检查了配置是否正在加载,发现安全配置正在加载。我是否应该对给定的用户ID和密码进行任何更改。 提前感谢。
执行器功能是通过在项目中添加“Spring-启动-启动-执行器”来提供的。 此时,security被禁用,因此项目不会导入Spring-Security。 使用spring-boot 1.5.x,所有执行器endpoint(自动提供,作为/info,以及我特定定义的endpoint)都正常工作。 使用spring-boot 1.5.x时,tomcat.version=9.0.0.m9 使用spri
我尝试在我的应用程序中扮演角色。但我一直有个消息。 在数据库中,我有列角色和值USER或ADMIN 重新控制器 如果我评论
我使用这个Camel示例作为参考,并更改了初始化器以扩展,以便可以部署到JBoss EAP6.4。 当它作为SpringBoot应用程序运行时: null 部署到JBoss时: 执行器endpoint均不工作。它们都返回http 404。 这个问题并不是演示所独有的,我们在JBoss中运行的所有容器化Camel Spring Boot应用程序都有同样的问题,并且需要明确的是,这些应用程序的功能完全