Получить Auth-токен от Keyrock Fiware API
Я использую Keyrock Fiware локально на своем ноутбуке в докере. Я знаю, что это работает, потому что я могу посетить http://localhost:8000
а также http://localhost:8000/sign_up
через мой браузер и они правильно отвечают.
У меня проблемы с созданием вызовов API. Я пытаюсь использовать Почтальон, но у меня проблемы с получением токена авторизации, который требуется для выполнения некоторых вызовов API.
Следуя этому руководству, я пытаюсь создать POST-запрос к http:/localhost:8000/oauth2/tokens
Это само по себе не работает, и мне нужно добавить другую информацию, как
grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD
&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET`
Я не знаю, куда эта информация должна идти в моем запросе почтальона. У меня есть поле Authorization
, Headers
, Body
, И в Headers
У меня есть поле key
, value
а также description
но я не понимаю, какой из них правильный.
1 ответ
Короткий ответ:
IdM Keyrock API требует аутентификации для большинства своих конечных точек, поэтому вы должны сгенерировать токен. Как сгенерировать токен - это нечто более сложное, что требует объяснения. Если вы используете официальный ключ IdM GE, я настоятельно рекомендую вам посмотреть этот учебник об этом компоненте в Fiware Academy. Помимо прочего, в нем объясняется, как сгенерировать токен OAuth2 с помощью клиента OAuth2 и клавиши IdM.
Длинный ответ:
GE IdM Keyrock состоит из двух проектов: Horizon и Keystone. Оба они являются форками проектов Openstack, которые вы можете найти в Github. Когда вы используете сервисы для порта 8000, вы вызываете сервисы Horizon, которые являются компонентом внешнего интерфейса. С другой стороны, когда вы используете службы для порта 5000, вы вызываете службы Keystone, которые являются внутренним компонентом. Кстати, если вы ищете дополнительную информацию об этих API, вы можете найти ее здесь:
Сложность в том, что, хотя keystone обрабатывает свои собственные внутренние токены (токены keystone), FIWARE использует токены OAuth2 для интеграции с другими GE. По этой причине вы найдете расширения OAuth2 в API keyrock. Таким образом, в зависимости от того, какой API вы хотите использовать, какой тип токена вам понадобится: токен Keystone или OAuth2.
Например, если вы хотите извлечь существующих пользователей, используя следующую службу, вам понадобится токен Keytone.
ПОЛУЧИТЕ http://localhost:5000/v3/users
Наконец, для генерации токена keystone вы можете использовать следующий сервис API keystone:
POST http://[keyrock_host]:5000/v3/auth/tokens
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": [ADMIN_USER],
"domain": { "name": "default" },
"password": [ADMIN_PWD]
}
}
}
}
}
Если вы установили Keyrock из образа Docker Hub или даже из официального репозитория исходного кода, попробуйте "idm" для ADMIN_USER и ADMIN_PWD.
Я надеюсь, что я был полезным. Удачи с яичком!