Comment obtenir le secret du client via l'API Keycloak?
Dans la documentation, je vois:
GET /admin/realms/{realm}/clients/{id}/client-secret
Mon code est le suivant:
data = {
"grant_type" : 'password',
"client_id" : 'myclientid',
"username" : 'myusername',
"password" : 'mypassword'
}
response = requests.get("https://mylink.com/auth/admin/realms/{myrealm}/clients/{myclientid}/client-secret", data=data, headers= {"Content-Type": "application/json"})
J'ai toujours une erreur 401.
Qu'est-ce que je fais mal?
Je pense que votre authentification ne fonctionne pas.
Exemple:
Obtenez le jeton
data = {"username": "username", "password": "password",
"client_id": "client_id", "client_secret": "client_secret",
"grant_type": "password"}
token = request.post("https://{server-url}/"realms/{realm-name}/protocol/openid-connect/token", data=data)
Demande à l'API
response = requests.get("https://mylink.com/auth/admin/realms/{myrealm}/clients/{myclientid}/client-secret", data=data, headers= {"Authorization": "Bearer " + token.get('access_token'), "Content-Type": "application/json"})
{id} dans l'URL n'est pas clientId, il est différent de clientId. c'est un identifiant unique keycloak (qui est uuid
) quelque chose comme 628e4b46-3d79-454f-9b1c-e07e86ee7615
GET/admin/realms/{realm}/clients/{id}/client-secret
Vous pouvez obtenir id en utilisant cette API, où elle retourne la liste de ClientRepresentation, qui a à la fois Id et clientId, utilisez Id
GET/{realm}/clients
"