Angular : HttpClient redirige sur / lors d'une requête sur l'api

Fermé
guewen56 Messages postés 34 Date d'inscription jeudi 29 novembre 2018 Statut Membre Dernière intervention 2 janvier 2021 - Modifié le 2 janv. 2021 à 01:15
Bonsoir à tous,

Merci par avance pour votre aide et votre lecture.

Je met actuellement en place un système d'authentification pour un ensemble d'application clientes (Angular) et une API (API platform, Symfony). J'utilise keycloak comme système d'authentification.

Actuellement, l'authentification fonctionne correctement sur chacune des application.

Seulement, lorsque je souhaite effectuer une requêtte HTTP sur l'API pour récupérer des données le résultat atterrit toujours à la racine.

Version angular : 11

ex :
{
"@context": "/contexts/Entrypoint",
"@id": "/",
"@type": "Entrypoint",
"user": "/users",
"greeting": "/greetings"
}


Je suppose qu'un ensemble de redirection à lieu lors de l'authentification avec un token de type Bearer. Je suppose alors que la destination est oubliée par la requête ou alors le nombre de redirection est trop élevé. Je ne sais pas trop.

Petit extrait de code pour la requête et l'authentification :

Initialisation de keycloak :

init(){
return new Promise((resolve, reject) => {
console.log('INIT : Service keycloak security ');
// @ts-ignore
this.keycloakAuth = new Keycloak({
url: 'http://keycloak:8080/auth',
realm: 'dev',
clientId: 'test-service'
});
// @ts-ignore
this.keycloakAuth.init({
onLoad: 'login-required'
}).then((authenticated) => {
// @ts-ignore
resolve({ authenticated, token: this.keycloakAuth.token });
}).catch(err => {
reject(err);
});
});
}


Interception de la requête pour introduire le token :

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
setHeaders: {
'Content-Type': 'application/json',
Authorization: `Bearer ${this.keycloakAuth.getToken()}`,
}
});
console.log(request);
return next.handle(request);
}


La requête de récupération d'utilisateurs

public getUser(): void {
this.http
.get<UserModel[]>( 'https://host.docker.internal:8444/users')
.subscribe(
(response) => {
this.user = response;
console.log(response);
this.emitUser();
},
(error) => {
console.log();
}
);
}


Pour information, j'utilise Postman pour faire des essais et je récupère bien mes données avec le token en paramètre.


Avez vous une solution à ce problème ?

Merci à vous. Bonne soirée.