web-dev-qa-db-fra.com

Keycloak Paramètre de formulaire manquant: grant_type

J'ai keycloak autonome fonctionnant sur ma machine locale.

J'ai créé un nouveau domaine appelé 'spring-test', puis un nouveau client appelé 'login-app'

Selon la documentation de repos:

POST: http://localhost:8080/auth/realms/spring-test/protocol/openid-connect/token

{
    "client_id": "login-app",
    "username": "user123",
    "password": "pass123",
    "grant_type": "password"
}

devrait me donner le jeton jwt mais je reçois une mauvaise demande avec réponse

{
    "error": "invalid_request",
    "error_description": "Missing form parameter: grant_type"
}

Je suppose qu'il manque quelque chose dans ma configuration.

EDIT: J'utilisais json body mais cela devrait être sous forme d’URL encodée:

token_type_hint:access_token&token:{token}&client_id:{client_id}&client_secret:{client_secret}
3
Borislav Stoilov

Vous devez envoyer vos données dans une demande POST avec Content-Type valeur d'en-tête défini sur application/x-www-form-urlencoded, pas json.

2
ipave

Pour ceux qui ont des problèmes avec curl, la commande curl est la suivante 

curl -d "client-secret=<client-secret>" -d "client_id=<client-id>-be" -d "username=<username>" -d "password=<password>" -d "grant_type=password" "http://localhost:8080/auth/realms/<realm-name>/protocol/openid-connect/token"
1
Adnan Khan