Oauth 从Keyrock Fiware API获取身份验证令牌

Oauth 从Keyrock Fiware API获取身份验证令牌,oauth,fiware,Oauth,Fiware,我在docker的笔记本电脑上本地运行Keyrock Fiware。我知道这是有效的,因为我可以访问http://localhost:8000 和http://localhost:8000/sign_up 通过我的浏览器,他们正确响应 我在创建API调用时遇到了麻烦。我正在尝试使用Postman,但在获取身份验证令牌时遇到了问题,这是进行一些api调用所必需的 接下来,我尝试创建一个对http:/localhost:8000/oauth2/tokens的POST请求 这本身似乎不起作用,我需要添

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

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

接下来,我尝试创建一个对http:/localhost:8000/oauth2/tokens的POST请求

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

grant_type=password&username=YOUR_USERNAME&password=YOUR_PAS‌​SWORD
&client_id=YOUR‌​_CLIENT_ID&client_se‌​cret=YOUR_CLIENT_SEC‌​RET` 
我不知道这些信息在我的邮递员申请中应该放在哪里。 我有字段授权、标题、正文,在标题中我有字段键、值和描述,但我不知道哪一个是正确的

简短回答:

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

长答覆:

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

棘手的部分是,虽然keystone处理自己的内部令牌keystone令牌,但FIWARE使用OAuth2令牌与其他GEs集成。因此,您将在keyrock API中找到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,甚至是从官方源代码存储库安装Keyrock,请尝试使用idm for ADMIN_USER和ADMIN_PWD


我希望我能帮上忙。祝tesis好运

好的,我想我已经明白你的答案了。非常感谢你。但是,我还有最后一个问题,如果我想生成一个keystone令牌,我必须把你之前展示给我的代码放在邮递员中吗?但是,在哪里?在字段body?中,我在我的帐户Fiware中创建了一个应用程序,然后我获得了客户ID和机密ID,但在Postman中,我不知道我该做什么:很抱歉给您带来不便。是的,您有。用于生成keystone令牌的keystone API服务需要您必须在请求正文中发送的用户凭据。看看这里,您有与cURL命令相同的请求:cURL-X POST\\-H'内容类型:application/json'\-d'{auth:{identity:{methods:[password],password:{user:{name:idm,domain:{name:default},password:idm}}如果您使用的是Postman,请不要忘记请求标题中的application/json。我想,我已经理解您了。我给你看3张照片。你能看看我是怎么说的吗?[1] :[2]:[3]:问题是,邮递员告诉我一个错误。也许你可以在第三张图片中看到,在cookie postman显示给我的字段中,csrftoken可能这个值就是标记。。。我不知道。另一件事,为什么密码和名字是idm谢谢你这么多。谢谢您所做的一切,给您带来的不便,敬请原谅。