首页 文章

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

提问于
浏览
1

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

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

3 回答

  • 1

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

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

    我希望这有帮助

    谢谢

  • 0

    看到@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

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

  • 1

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

    • 关于服务API:

    • Authentication & authorization :可以通过PEP实现 . 以下documentation介绍了两种PEP替代实现 . 但请注意,PEP不能独立运行,因为它还需要IDM和访问控制才能工作 . 据我所知,@ Alvaro可以详细解释这个话题(关于Wilma PEP) . 据我所知 .

    • Encryption :它可以由充当HTTPS到HTTP桥接的代理(例如ngnix)实现,也可以由Orion本身使用 -https CLI参数(与 -key-cert 结合使用)实现 . 这个section of the documentation详细阐述了它 .

    • 关于通知API:

    • Authentication & authorization :自定义通知的当前实现(请参阅NGSIv2规范中的"Custom notifications"部分)允许您包含可用于身份验证的自定义HTTP标头(例如,保护您的 endpoints 的PEP实例所需的 X-Auth-Token 标头) . 请注意,这当前是以静态方式完成的,即Orion无法直接与IDM / AccessControl交互以在到期后动态设置 X-Auth-Token 值等 . 但是,可以开发一个能够执行此操作并设置的过程正确的 Headers (如果你对此感兴趣我建议检查"How to add a custom header in outgoing notifications with Orion?"帖子) .

    • Encryption :可以在Rush组件中实现中继 . 这个section of the documentation详细阐述了它 .

    从版本1.7.0开始,Orion实现本机HTTPS通知(即不需要Rush) .

相关问题