Fiware - 如何集成Keyrock IdM,Wilma PEP代理和Orion Context Broker?

时间:2016-12-06 15:49:20

标签: fiware fiware-orion fiware-wilma

我阅读了Keyrock和Wilma的所有文档,我观看了FIWARE学院的所有视频,但我仍未在此集成中取得成功。我几天前正在寻找这个,但没有成功。我认为FIWARE文档可以有教程,动手......

我有一个带有Orion Context Broker的虚拟机和一个带有Keyrock IdM和Wilma PEP Proxy的容器。我正在尝试生成访问令牌以授予应用程序访问权限,但我仍然没有得到它。此外,我想知道如何在Orion Context Broker和一些IoT设备之间安全地交换消息。实际上,考虑物联网设备必须访问屏幕并将其凭证进行身份验证并获得授权,如Keyrock IdM示例所示,这很复杂。你怎么样?

3 个答案:

答案 0 :(得分:1)

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

  • 关于服务API:
    • 身份验证&授权:可以通过PEP实现。 以下documentation介绍了两种PEP替代方案 实现。但请注意,PEP不能独立工作 还需要IDM和访问控制才能工作。我明白@Alvaro 可以详细解释这个主题(关于Wilma PEP)。它出来了 我的知识。
    • 加密:它可以由充当HTTPS-to-HTTP的代理实现 桥接(例如ngnix)或Orion本身使用-https CLI 参数(与-key-cert结合使用)。这个 section of the documentation详细阐述了它。
  • 关于通知API:
    • 身份验证&授权:当前执行 自定义通知(请参阅NGSIv2规范中的“自定义通知”部分)允许您包含自定义HTTP标头 可用于身份验证(例如,所需的X-Auth-Token标头 通过保护您的端点的PEP实例)。注意 目前这是以静态方式完成的,即Orion无法做到 与IDM / AccessControl直接交互以设置X-Auth-Token 到期后动态值等。但是,有可能开发一个 进程能够做到这一点并设置正确的标题(如果你感兴趣 在这里,我建议检查"How to add a custom header in outgoing notifications with Orion?"帖子。
    • 加密:可以在Rush组件中实现中继。这个 section of the documentation详细阐述了它。

UPDATE:自版本1.7.0以来,Orion实现了本机HTTPS通知(即不需要Rush)。

答案 1 :(得分:1)

看到@albertinisg here的答案,我找到了bash script的令牌请求。我将其更改为与我的本地实例一起使用并且有效。

在FIWARE Portal(more information here)注册我的应用程序后,我不得不向http://idm:8000/oauth2/token发出POST请求(idm是我本地的Keyrock实例)。使用此有效令牌,我可以访问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):

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';

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

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

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;
   }
}

我做了一个关于FIWARE Orion,Wilma和Keyrock整合的简单教程:https://www.slideshare.net/daltoncezane/integrating-fiware-orion-keyrock-and-wilma

我希望这个答案可以帮助别人。

答案 2 :(得分:0)

以下演示文稿逐步向您展示如何创建基于FIWARE的IoT平台并使用PEP代理,Keystone和Keypass保护它。

https://docs.google.com/presentation/d/18LaWZSK4h2wncPF6hNAwK5MToLvJesR3XLrzsqrsmrw/edit?usp=sharing

我希望这会有所帮助

感谢