Ошибка 401 - логин / пароль исполнительного механизма пружинной загрузки в браузере
Я использую пружинную загрузку с приводом и добавляю конфигурацию безопасности:
management.port=8088
management.address=127.0.0.1
management.security.enabled=true
security.user.name=admin
security.user.password=secret
management.security.role=SUPERUSER
curl -u admin:secret http://127.0.0.1:8088/metrics
все в порядке, но с Chrome ( http://127.0.0.1:8088/metrics): {"timestamp":1506692938036,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource.","path":"/metrics"}
Как использовать логин / пароль в URL или заголовках?
РЕДАКТИРОВАТЬ 1
Я пробую решение @Lachezar Balev (авторизация: Basic YWRtaW46c2VjcmV0 + admin:secret@ in url), но это KO
2 ответа
В URL:
http://admin:secret@127.0.0.1:8088/metrics
В качестве заголовка:
Authorization: Basic YWRtaW46c2VjcmV0
Используйте CustomAuthenticationEntryPoint с аннотацией @Component
@Configuration
@EnableWebSecurity
public class AdminEntryPointsSecurityConfig {
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder();
}
@Configuration
@Order(1)
public static class App1ConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Autowired
private CustomAuthenticationEntryPoint authenticationEntryPoint;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/actuator/**")
.authorizeRequests().anyRequest().hasRole("ADMIN")
.and().httpBasic().authenticationEntryPoint(authenticationEntryPoint)
.and().exceptionHandling().accessDeniedPage("/403");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
auth.inMemoryAuthentication()
.passwordEncoder(encoder)
.withUser("act")
.password(encoder.encode("act"))
.roles("ADMIN");
}
}
}
Затем выполните базовую аутентификацию.
@Component
public class CustomAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
@Override
public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException, ServletException {
response.addHeader("WWW-Authenticate", "Basic realm=\"" + getRealmName() + "\"");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
final PrintWriter writer = response.getWriter();
writer.println("HTTP Status " + HttpServletResponse.SC_UNAUTHORIZED + " - " + authException.getMessage());
}
@Override
public void afterPropertiesSet() throws Exception {
setRealmName("ADMIN");
super.afterPropertiesSet();
}
}
Пожалуйста обновите:
management.security.enabled=true
чтобы:
management.security.enabled=false