Oauth 从Keyrock Fiware API获取身份验证令牌
我在docker的笔记本电脑上本地运行Keyrock Fiware。我知道这是有效的,因为我可以访问http://localhost:8000 和http://localhost:8000/sign_up 通过我的浏览器,他们正确响应 我在创建API调用时遇到了麻烦。我正在尝试使用Postman,但在获取身份验证令牌时遇到了问题,这是进行一些api调用所必需的 接下来,我尝试创建一个对http:/localhost:8000/oauth2/tokens的POST请求 这本身似乎不起作用,我需要添加其他信息,如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请求 这本身似乎不起作用,我需要添
grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD
&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET`
我不知道这些信息在我的邮递员申请中应该放在哪里。
我有字段授权、标题、正文,在标题中我有字段键、值和描述,但我不知道哪一个是正确的 简短回答:
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谢谢你这么多。谢谢您所做的一切,给您带来的不便,敬请原谅。