从 Keyrock Fiware 获取 Auth-Token API
Obtain Auth-Token from Keyrock Fiware API
我在 docker 的笔记本电脑上本地使用 运行 Keyrock Fiware。我知道这是有效的,因为我可以通过我的浏览器访问 http://localhost:8000
和 http://localhost:8000/sign_up
,它们会正确响应。
我在创建 API 调用时遇到了问题。我正在尝试使用 Postman,但我在获取授权令牌时遇到了问题,这是进行一些 api 调用所必需的。
在此 guide 之后,我正在尝试创建 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`
我不知道这些信息应该放在我的 Postman 请求中的什么地方。
我有字段 Authorization
、Headers
、Body
,在 Headers
中我有字段 key
、value
和 description
但是,我不明白其中哪一个是正确的。
简答:
IdM Keyrock API 需要对其大部分端点进行身份验证,因此您实际上应该生成一个令牌。如何生成令牌是更复杂的事情,需要解释一些背景知识。
如果您使用的是官方 IdM keyrock GE,我完全建议您在 Fiware Academy 观看有关此组件的 tutorial。
它解释了如何使用 OAuth2 客户端和 IdM keyrock 生成 OAuth2 令牌。
长答案:
GE IdM Keyrock 由两个项目组成:Horizon 和 Keystone。两者都是 Openstack 项目的分支,您可以在 Github 中找到它们。当您使用端口 8000 的服务时,您正在调用作为前端组件的 Horizon 服务。另一方面,当您使用端口 5000 的服务时,您正在调用作为后端组件的 Keystone 服务。顺便说一句,如果您正在寻找有关此 API 的更多信息,您可以在这里找到它:
棘手的部分是,虽然 keystone 处理自己的内部令牌(keystone tokens),但 FIWARE 使用 OAuth2 令牌与其他 GE 集成。因此,您会在 keyrock APIs 中找到 OAuth2 扩展。因此,根据您要使用的 API,您将需要哪种令牌:Keystone 令牌或 OAuth2 令牌。
例如,如果您想使用以下服务检索现有用户,您将需要一个 Keytone 令牌。
最后,要生成一个 keystone 令牌,您可以使用 keystone API 的以下服务:
POST http://[keyrock_host]:5000/v3/auth/tokens
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": [ADMIN_USER],
"domain": { "name": "default" },
"password": [ADMIN_PWD]
}
}
}
}
}
如果您从 Docker Hub 图像或什至从官方源代码存储库安装 Keyrock,请尝试使用 "idm" for ADMIN_USER 和 ADMIN_PWD.
希望对您有所帮助。祝 tesis 好运!
我在 docker 的笔记本电脑上本地使用 运行 Keyrock Fiware。我知道这是有效的,因为我可以通过我的浏览器访问 http://localhost:8000
和 http://localhost:8000/sign_up
,它们会正确响应。
我在创建 API 调用时遇到了问题。我正在尝试使用 Postman,但我在获取授权令牌时遇到了问题,这是进行一些 api 调用所必需的。
在此 guide 之后,我正在尝试创建 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`
我不知道这些信息应该放在我的 Postman 请求中的什么地方。
我有字段 Authorization
、Headers
、Body
,在 Headers
中我有字段 key
、value
和 description
但是,我不明白其中哪一个是正确的。
简答:
IdM Keyrock API 需要对其大部分端点进行身份验证,因此您实际上应该生成一个令牌。如何生成令牌是更复杂的事情,需要解释一些背景知识。 如果您使用的是官方 IdM keyrock GE,我完全建议您在 Fiware Academy 观看有关此组件的 tutorial。 它解释了如何使用 OAuth2 客户端和 IdM keyrock 生成 OAuth2 令牌。
长答案:
GE IdM Keyrock 由两个项目组成:Horizon 和 Keystone。两者都是 Openstack 项目的分支,您可以在 Github 中找到它们。当您使用端口 8000 的服务时,您正在调用作为前端组件的 Horizon 服务。另一方面,当您使用端口 5000 的服务时,您正在调用作为后端组件的 Keystone 服务。顺便说一句,如果您正在寻找有关此 API 的更多信息,您可以在这里找到它:
棘手的部分是,虽然 keystone 处理自己的内部令牌(keystone tokens),但 FIWARE 使用 OAuth2 令牌与其他 GE 集成。因此,您会在 keyrock APIs 中找到 OAuth2 扩展。因此,根据您要使用的 API,您将需要哪种令牌:Keystone 令牌或 OAuth2 令牌。
例如,如果您想使用以下服务检索现有用户,您将需要一个 Keytone 令牌。
最后,要生成一个 keystone 令牌,您可以使用 keystone API 的以下服务:
POST http://[keyrock_host]:5000/v3/auth/tokens
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": [ADMIN_USER],
"domain": { "name": "default" },
"password": [ADMIN_PWD]
}
}
}
}
}
如果您从 Docker Hub 图像或什至从官方源代码存储库安装 Keyrock,请尝试使用 "idm" for ADMIN_USER 和 ADMIN_PWD.
希望对您有所帮助。祝 tesis 好运!