Как получить секрет клиента через API Keycloak? - PullRequest
0 голосов
/ 29 ноября 2018

Как получить секрет клиента через API Keycloak?

В документации я вижу:

GET /admin/realms/{realm}/clients/{id}/client-secret

Мой код следующий:

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"})

Я всегда получаю ошибку 401.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Я думаю, ваша аутентификация не работает.

  1. Вам нужен токен.Вы можете генерировать, используя OpenID (см. документы ).
  2. С помощью токена (по заголовку Authorization) вы можете сделать запрос к API.

Пример:

Получить токен

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)

Запрос к 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"})
0 голосов
/ 29 ноября 2018

{id} в URL не является clientId, он отличается от clientId.это уникальный идентификатор keycloak (который uuid), например, 628e4b46-3d79-454f-9b1c-e07e86ee7615

GET / admin / realms / {realm} / clients / {id} / client-secret

Вы можете получить идентификатор с помощью этого API, где он возвращает список ClientRepresentation, который имеет как Id , так и clientId , используйте Id

GET / {realm} / клиентов

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...