【问题标题】:Registering AE To CSE With ACP使用 ACP 将 AE 注册到 CSE
【发布时间】:2018-03-28 07:50:33
【问题描述】:

我正在尝试实施 oneM2M 标准。我查看了http://www.onem2m.org/application-developer-guide/application-registration 的应用程序开发人员指南

ADN-AE-1 向 MN-CSE 发送注册请求,但请求负载包含 ACPI,我不明白 ADN-AE-1 是如何知道 ACPI 的?

POST /home_gateway?rcn=0 HTTP/1.1
Host: mn.provider.com:8080
X-M2M-Origin: C
Content-Type: application/vnd.onem2m-res+json; ty=2
X-M2M-RI: mncse-92345

{ "m2m:ae": {
    "rn": "light_ae1",
    "api": "A01.com.company.lightApp01",
    "rr": "true",
    "poa": ["http://192.168.0.10:9090"],
    "acpi": ["/mn-cse/acp-805496226"]
  }
}

【问题讨论】:

    标签: onem2m


    【解决方案1】:

    你基本上有两个选择。

    首先,您可以在请求中省略 acpi。在这种情况下,CSE 会自动将一个(默认 ACP 资源)分配给新的 AE。然后,您将在创建请求的答案中获得该分配的 acpi

    但这可能不是您想要的,因为您最终可能会得到一个无法反映您实际需要的权限的分配 ACP。

    第二种方法是您自己为 AE 创建 ACP。这与创建 AE 资源非常相似,只是使用了 ACP 结构。 CSE 负责检查您是否正确指定了所有内容并在允许的权限范围内。在答案中,您将获得新 ACP 资源的资源标识符 (ri),然后在创建 AE 资源时将其分配给 acpi 属性。

    对于第二种方法,最好先查找 ACP 资源,因为它可能已经存在(或者由 AE 在之前运行应用程序期间创建,或者甚至由以下人员预先定义,例如,CSE 管理员),因此您可以只检索它而不是创建它。

    您应该使用结构化名称而不是 ri 来访问已知资源,例如预定义的 ACP。例如,您将尝试使用结构化名称 /cse-id/cse-name/myACP 而不是资源标识符 /cse-id/acp-12345 访问 CSE 上的资源。这种方法需要你构造结构化的名字,它有点长,但好处是它反映了资源结构,使资源可以通过资源树的路径访问,而资源标识符很短,但不反映资源结构。

    【讨论】:

    • 除了对akr的详尽解释,我建议查看一些OneM2M服务器的开源实现,例如Ocean Mobius:github.com/IoTKETI/Mobius
    • 感谢您的补充。 Eclipse om2m 项目也有几个很好的例子。
    • 我真的很困惑。你的意思是我应该事先知道 ADN-AE1、ADN-AE2 和 MN-AE 将注册到 MN-CSE。因为在向 CSE 发送注册请求之前,应该以某种方式创建访问控制策略。让我手动为他们创建 ACP,这样他们怎么知道他们的 ACP 是我为他们创建的。他们在发送注册之前如何获得 acpi?他们也有先验知识吗?我的意思是 acpi 和 cseid 在他们的设备配置中?顺便感谢您的回答。真的很难找到关于 OneM2M 的东西
    • 如前所述:资源 ID 可能会更改,因为它是唯一标识符,因此您应该在此处使用结构化名称。是的,ACP 在某种程度上是先验知识,因为它们说明了您的 AE 可以做什么以及可以访问什么。但是您也可以在 ACP 中说明允许 other 对您的 AE 做什么。您还可以尝试发现您需要的 ACP。这称为资源发现,对 ACP 的工作方式与对任何其他资源的工作方式相同。不用担心安全问题,CSE 应该只返回允许您访问的 ACP。
    • oneM2M 是一项相当年轻的技术,现在开始受到广泛关注。我希望在不久的将来会看到更多示例和教程。
    最近更新 更多