从 Keyrock Fiware 获取 Auth-Token API

Obtain Auth-Token from Keyrock Fiware API

我在 docker 的笔记本电脑上本地使用 运行 Keyrock Fiware。我知道这是有效的,因为我可以通过我的浏览器访问 http://localhost:8000http://localhost:8000/sign_up,它们会正确响应。

我在创建 API 调用时遇到了问题。我正在尝试使用 Postman,但我在获取授权令牌时遇到了问题,这是进行一些 api 调用所必需的。

在此 guide 之后,我正在尝试创建 POST 请求 http:/localhost:8000/oauth2/tokens

这本身似乎不起作用,我需要添加其他信息,例如

grant_type=password&username=YOUR_USERNAME&password=YOUR_PAS‌​SWORD
&client_id=YOUR‌​_CLIENT_ID&client_se‌​cret=YOUR_CLIENT_SEC‌​RET` 

我不知道这些信息应该放在我的 Postman 请求中的什么地方。 我有字段 AuthorizationHeadersBody,在 Headers 中我有字段 keyvaluedescription但是,我不明白其中哪一个是正确的。

简答:

IdM Keyrock API 需要对其大部分端点进行身份验证,因此您实际上应该生成一个令牌。如何生成令牌是更复杂的事情,需要解释一些背景知识。 如果您使用的是官方 IdM keyrock GE,我完全建议您在 Fiware Academy 观看有关此组件的 tutorial。 它解释了如何使用 OAuth2 客户端和 IdM keyrock 生成 OAuth2 令牌。

长答案:

GE IdM Keyrock 由两个项目组成:Horizo​​n 和 Keystone。两者都是 Openstack 项目的分支,您可以在 Github 中找到它们。当您使用端口 8000 的服务时,您正在调用作为前端组件的 Horizo​​n 服务。另一方面,当您使用端口 5000 的服务时,您正在调用作为后端组件的 Keystone 服务。顺便说一句,如果您正在寻找有关此 API 的更多信息,您可以在这里找到它:

棘手的部分是,虽然 keystone 处理自己的内部令牌(keystone tokens),但 FIWARE 使用 OAuth2 令牌与其他 GE 集成。因此,您会在 keyrock APIs 中找到 OAuth2 扩展。因此,根据您要使用的 API,您将需要哪种令牌:Keystone 令牌或 OAuth2 令牌。

例如,如果您想使用以下服务检索现有用户,您将需要一个 Keytone 令牌。

GET http://localhost:5000/v3/users

最后,要生成一个 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 好运!