Quando eu executo primavera servidor de nuvem de configuração sem segurança primavera o serviço obtém a configuração sem problema, mas quando eu ativar a segurança da Primavera não vai buscar os arquivos de configuração. Parece lançar um erro HTTP 401. Tenho verificado que o nome de usuário e senha está correta, eu também tentei o usuário: url maneira password @ de autenticar com o mesmo problema.
Se eu acessar o url http://localhost:8888/service/default
diretamente no navegador e digite o nome de usuário e senha as configurações são exibidas.
Qualquer ajuda será apreciada, eu não tenho certeza se há um problema com a minha configuração nuvem ou minha configuração de segurança.
Versão da mola de arranque: '2.2.4.RELEASE'
spring-nuvem-config-servidor versão: '2.2.1.RELEASE'
sistema de compilação: Gradle
Java 8
Esta configuração sempre falha, eu tentei adicionar-lo para os serviços existentes que eu tinha e que não funcionou então eu criei um novo servidor de configuração e um novo cliente através da mola initializer em https://start.spring.io/ com o abaixo config e ainda não funciona.
Log quando a segurança está ativo:
2020-02-19 14:29:16.553 INFO 14996 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2020-02-19 14:29:16.577 DEBUG 14996 --- [ main] o.s.web.client.RestTemplate : HTTP GET http://localhost:8888/service/default
2020-02-19 14:29:16.634 DEBUG 14996 --- [ main] o.s.web.client.RestTemplate : Accept=[application/json, application/*+json]
2020-02-19 14:29:16.647 DEBUG 14996 --- [ main] o.s.web.client.RestTemplate : Response 401 UNAUTHORIZED
2020-02-19 14:29:16.652 WARN 14996 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: 401 : [{"timestamp":"2020-02-19T12:29:16.642+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/service/default"}]
Log quando Segurança está desativada / permitir tudo
2020-02-19 12:43:13.756 INFO 4972 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2020-02-19 12:43:17.563 INFO 4972 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=service, profiles=[default], label=null, version=fb9ccb6e46098bfe425130d6447a0797206e5c2f, state=null
config application.yml servidor
github uri é obscurecida, conexão à repo privado não é a questão.
server:
port: 8888
spring:
application:
name: config-server
security:
user:
name: 'root'
password: '1234'
cloud:
config:
server:
git:
uri: <github-uri>
ignore-local-ssh-settings: false
strict-host-key-checking: false
private-key: 'classpath:resources/id_rsa'
arquivo application.yml serviço
spring:
application:
name: service
cloud:
config:
uri: http://localhost:8888
username: 'root'
password: '1234'
fail-fast: true
A segurança na web é muito básico, mas a seguir é a configuração de segurança:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// Secure the endpoints with HTTP Basic authentication
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/**").fullyAuthenticated();
http.httpBasic().and().exceptionHandling();
}
}
Você deve usar bootstrap.yaml
(não application.yaml
) para o aplicativo cliente.
Ele funciona sem segurança só porque o seu cliente está usando configuração padrão, que não tem nome de usuário e senha. Quando você ativar a segurança ele retorna 401 porque nome de usuário e senha padrão estão vazios.