Fiware-如何集成Keyrock IdM、Wilma PEP代理和Orion上下文代理?

Fiware-如何集成Keyrock IdM、Wilma PEP代理和Orion上下文代理?,fiware,fiware-orion,fiware-wilma,Fiware,Fiware Orion,Fiware Wilma,我阅读了Keyrock和Wilma的所有文档,并观看了FIWARE Academy的所有视频,但我仍然没有在这一整合中取得成功。我从几天前开始寻找这个,但没有成功。我认为FIWARE文档可以有教程,实践 我有一个带有Orion上下文代理的VM和一个带有Keyrock IdM和Wilma PEP代理的容器。我试图生成一个访问令牌来授予应用程序访问权限,但仍然没有得到它。此外,我想知道如何在Orion上下文代理和一些IoT设备之间安全地交换消息。事实上,像Keyrock IdM示例所示,考虑物联网设

我阅读了Keyrock和Wilma的所有文档,并观看了FIWARE Academy的所有视频,但我仍然没有在这一整合中取得成功。我从几天前开始寻找这个,但没有成功。我认为FIWARE文档可以有教程,实践


我有一个带有Orion上下文代理的VM和一个带有Keyrock IdM和Wilma PEP代理的容器。我试图生成一个访问令牌来授予应用程序访问权限,但仍然没有得到它。此外,我想知道如何在Orion上下文代理和一些IoT设备之间安全地交换消息。事实上,像Keyrock IdM示例所示,考虑物联网设备必须访问屏幕并将其凭证放入身份验证和授权中是很复杂的。您的建议是什么?

关于Orion,这取决于要保护的接口,服务API(即Orion通常在端口1026运行的侦听REST服务器)、通知API或两者:

  • 关于服务API:
    • 身份验证和授权:可通过PEP实现。 下面介绍两种政治公众人物备选方案 实现。但是,请注意,PEP并不是独立工作的,因为它是 还需要IDM和访问控制才能工作。我理解@Alvaro 可以详细解释该主题(关于Wilma PEP)。出局了 据我所知
    • 加密:它可以通过代理(充当HTTPS到HTTP)来实现 桥接(例如)或由Orion本身使用
      -https
      CLI 参数(与
      -key
      -cert
      组合使用)。这 详细阐述它
  • 关于通知API:
    • 身份验证和授权:当前的 自定义通知(请参阅规范中的“自定义通知”部分)允许您包括 可用于身份验证(例如所需的
      X-Auth-Token
      头 通过保护端点的PEP实例)。注意 目前这是以静态方式完成的,即猎户座无法 直接与IDM/AccessControl交互以设置
      X-Auth-Token
      在到期后动态地获取值等。但是,可以开发 流程能够做到这一点,并设置适当的标题(如果您感兴趣 在这方面,我建议检查后)
    • 加密:可以在组件中实现中继。这 详细阐述它

更新:自verion 1.7.0以来,Orion实现了本机HTTPS通知(即无需匆忙)。

看到@albertinisg的答案,我发现了一个for令牌请求。我将其更改为与本地实例一起使用,并且效果良好

在FiwarePortal()上注册我的应用程序后,我不得不向(idm是我的Keyrock本地实例)发出POST请求。有了这个有效的令牌,我可以访问Orion中的内容

import requests, json, getpass

TOKEN_URL = "http://idm:5000/v2.0/tokens"

USER = raw_input("Username: ")
PASSWORD = getpass.getpass("Password: ")
PAYLOAD = "{\"auth\": {\"passwordCredentials\": {\"username\":\""+USER+"\", \"password\":\""+PASSWORD+"\"}}}"
HEADERS =  {'content-type': 'application/json'}
RESP = requests.post(TOKEN_URL, data=PAYLOAD, headers=HEADERS)
PEP代理(Wilma)配置(config.js):

在有效令牌和PEP代理(Wilma)服务器使用此配置运行的情况下,可以控制对Orion的访问,请求PEP代理地址。PEP代理将此请求重定向到IdM(Keyrock),以便IdM可以验证用户/设备凭据。如果凭据有效,用户/设备将收到有效令牌,现在PEP代理可以允许访问Orion

对于HTTPS通信,我将Nginx服务器配置为充当反向代理(.conf文件):

我制作了一个关于FIWARE Orion、Wilma和Keyrock集成的简单教程:


我希望这个答案能对其他人有所帮助。

以下演示将逐步向您展示如何创建基于FIWARE的物联网平台,以及如何使用PEP代理、Keystone和Keypass保护该平台

我希望这有帮助


谢谢

我建议您按照Keyrock课程()第3课中介绍的步骤来了解如何创建OAuth2令牌。详细的文档可以在这里找到()。关于猎户座的问题,我物联网团队的同事会帮助你。阅读问题帖子,不确定哪一个问题是针对猎户座的@道尔顿,你能详细说明一下吗?谢谢!亲爱的@Alvaro,我已经看过Fiware Academy的所有视频,包括第三课(我看了两次)。我在本地IdM实例中创建访问令牌时遇到问题。我已经在我的IdM门户中创建了应用程序,它给了我客户ID和机密ID。但是我对如何请求有效的访问令牌有疑问。现在,在进一步搜索之后,我发现并获得了一个访问令牌,其中有一个帖子。我测试了它,请求用户信息时使用了“它成功了。现在,我有另一个疑问,@Alvaro:POST(Keyrock Horizon)获得的令牌和GET(Keyrock Keystone)获得的令牌有什么区别?你能解释一下并给我举个例子吗?@Dalton,使用Keystone API创建的令牌(/v2.0/tokens)正是这样,Keystone令牌通常用于执行Openstack服务的操作。另一方面,使用OAuth2 API(/OAuth2/token)创建的令牌是用于根据OAuth2规范对外部应用程序范围内的用户进行身份验证的访问令牌。感谢您的回答@fgalan。关于第一部分(服务API),我已经阅读了文档(,正如前面的评论中所解释的。我在docker容器中运行IdM(Keyrock)和PEP代理(Wilma)(我认为访问控制-AuthZForce-现在没有必要)。我的疑问是在实际方面,因为我们没有这种集成的示例(“实践指南”会非常有用)。此外,文档中不清楚如何使用-https(无示例)。中“httpsPrepare.sh”的链接不再有效。这使得配置环境更加困难
config.app_host = 'my_orion_ip'; //change to your Orion address
config.app_port = '1026'; //change to your Orion port

config.username = 'pep_proxy_credential_obtained_at_portal';
config.password = 'password_obtained_at_portal';
server {
   listen       443;
   server_name  orion;

   ssl                  on;
   ssl_certificate      /etc/nginx/ssl/orion.crt;
   ssl_certificate_key  /etc/nginx/ssl/orion.key;
   ...
   ...
   location / {
      #root   orion:1026;   #/var/www/yourdomain.com;
       #index  index.php index.html index.htm;
       proxy_set_header        Host $host;
       proxy_set_header        X-Real-IP $remote_addr;
       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header        X-Forwarded-Proto $scheme;

       # Fix the “It appears that your reverse proxy set up is broken" error.
       proxy_pass          http://orion:1026;
       proxy_read_timeout  90;
       proxy_redirect      http://orion:1026 https://orion;
   }
}