Ce que j'essaye de faire:

J'essaie d'exécuter un exemple d'application de démarrage de printemps avec Jolokia intégré, de configurer une authentification de base dessus et de me connecter à partir de hawt.io, une sorte de projet pilote.

Ma configuration (tout sur localhost, pas de pare-feu):

  • Application Spring sur le port 8080 (par défaut)
  • Hawtio sur le port 5555

J'utilise le dernier démarrage de printemps disponible pour mon exemple d'application d'utilisation de jolokia et hawt.io (Clause de non-responsabilité Je suis assez nouveau dans le domaine du démarrage du printemps et de la sécurité du ressort)

Version Spring Boot: 1.5.2 VERSION Spring Security: 4.2.2 VERSION Jolokia: 1.3.5

Test 1: exécution sans aucune sécurité de ressort (j'ai défini management.security.enabled=false dans application.properties) - tout fonctionne comme prévu, je peux me connecter à localhost: 8080 / jolokia sans aucun utilisateur / mot de passe à la fois de mon navigateur et de l'application hawt.io que j'exécute localement

Test 2: commentez la ligne management.security.enabled=false et créez le fichier de configuration suivant pour connecter la sécurité Spring:

@Configuration
@EnableWebSecurity
public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {

@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
            .withUser("admin")
            .password("admin")
            .roles("ACTUATOR");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .antMatchers("/error").permitAll()
            .antMatchers("/jolokia/**").hasRole("ACTUATOR")
            .and().httpBasic();
 }
}

Après cette étape, je vois que lors de la connexion à localhost: 8080 / jolokia depuis le navigateur, je vois une fenêtre contextuelle d'authentification de base, j'entre admin / admin et je vois Jolokia répondre, donc je conclus que ma configuration de sécurité de printemps est OK

Il est maintenant temps d'exécuter hawt.io:

java -jar hawtio-app-1.5.0.jar --port 5555

Et maintenant, quand je clique sur "se connecter" sur l'interface utilisateur hawt.io après avoir entré les détails de ma connexion localhost: 8080 / jolokia (il n'a pas de champs de texte utilisateur / mot de passe), cela me renvoie à l'écran de connexion hawt.io. Et quand j'entre admin / admin, je vois un message d'interface utilisateur «Échec de la connexion, interdit».

J'ai essayé de voir les demandes que hawt.io envoie à mon hôte local: 8080 (en utilisant burp suite), et je vois qu'avant de voir un écran de connexion hawt.io, je vois beaucoup de réponses 401 (non autorisées) lorsque je tente d'interroger jolokia sur 8080 (bien sûr que je le fais, car avant d'entrer dans admin / admin - donc aucune chance de le savoir à l'avance). Après être entré dans l'écran de connexion de hawtio, entrez admin / admin et appuyez sur "connexion" - je ne vois aucune demande de hawt.io à 8080. Je ne vois qu'une seule demande de l'interface utilisateur au serveur hawt.io qui répond avec 403. Je soupçonne donc que c'est une fenêtre d'authentification interne de hawt.io lui-même et cela n'a rien à voir avec jolokia.

Donc, ce que je demande, c'est - ce qui me manque dans cette configuration, comment dois-je configurer hawt.io pour pouvoir me connecter à ma configuration?

Merci beaucoup d'avance

3
Mark Bramnik 4 avril 2017 à 07:53

2 réponses

Meilleure réponse

L'ajout du nom d'hôte jolokia à la propriété hawtio.proxyWhitelist a fait le travail pour moi.

2
rrarr 3 juil. 2017 à 15:12

Essayez d'ajouter endpoints.jolokia.sensitive=false à Spring Boot application.properties.

Par défaut, Spring Boot traite Jolokia comme une ressource «sensible», ce qui peut provoquer des erreurs d'autorisation lors de l'accès à Jolokia.

0
Tadayoshi Sato 4 avril 2017 à 13:48