Keycloak: grant_type = пароль в пользовательском провайдере идентификации - PullRequest
0 голосов
/ 05 июля 2018

Я добавил в свою область пользовательский поставщик идентификаторов OIDC, и я хочу использовать поток разрешений прямого доступа (или grant_type=password), но это не работает.

Возможно ли это с Keycloak?

При попытке с потоком кода авторизации все работает нормально, но с grant_type=password ошибка

   {
    "error":"invalid_grant",
    "error_description":"Invalid user credentials"
    }

возвращается.

Я пытаюсь получить токен доступа и обновить токен, выполняя следующий запрос:

$ curl -X POST 'http://localhost:8080/auth/realms/master/protocol/openid-connect/token'
    -H 'content-type: application/x-www-form-urlencoded' 
    -d 'grant_type=password' 
    -d 'client_id=test-client' 
    -d 'client_secret=834a546f-2114-4b50-9af6-697adc06707b' 
    -d 'username=user' // valid user in custom Identity Provider
    -d 'password=password' // password in custom Identity Provider

И это конфигурация провайдера идентификации: это конфигурация провайдера идентификации

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

У меня точно такой же сценарий, для меня это похоже на ошибку. Мне пришлось отсоединить учетную запись от IDP, установить пароль и удалить ожидающие действия пользователя. Это не решение, но в моем случае все было в порядке, поскольку мне нужно было только тестировать учетную запись пользователя для тестов API, и у меня не было такого сценария на производстве.

0 голосов
/ 11 февраля 2019

Пожалуйста, посмотрите ниже команду curl

curl -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' -i 'https://135.250.138.93:8666/auth/realms/<Realm-Name>/protocol/openid-connect/token' --data 'username=<userName>&password=<Password>&client_id=<Client-ID>&grant_type=password&client_secret=7df18c0d-d4c7-47b1-b959-af972684dab0'

В приведенной выше команде вы должны указать эти данные

  1. Имя области - Имя области, для которой вы хотите токен
  2. userName - у вас должен быть пользователь, который может получить доступ к вышеуказанной области
  3. Пароль - Пароль для указанного выше пользователя
  4. Идентификатор клиента - Имя клиента (обычно это строковое значение) в
  5. Client-Secret - Секрет клиента вышеуказанного клиента, который вы можете найти [Realm-> Client List-> Выберите клиента-> вкладка Credential]
0 голосов
/ 27 сентября 2018

Вам нужно установить клиента с test-client, и пользователь должен быть доступен в области. Хотя вы не можете получить то, чего хотите, с этим 100

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