Skip to content

开发 Subtenancy-Aware 应用

MindSphere 使客户(租户)能够轻松地基于平台功能向他们的客户(子租户)提供数字服务。子租户可以使用主租户分配给他们的服务和 assets。

使用子租户扮演

通过用户令牌的子租户扮演

在网关注册的应用每次调用都会收到一个 JSON Web 令牌(JWT)。JWT 对调用服务的主体进行身份验证。如果用户属于子租户,JWT 包含指定子租户ID的 subtenant 声明。

按照从后端调用 APIs中描述的方法提取令牌,并将其用于 API 调用。可以使用所使用框架的 JWT 库(Spring、NodeJS 等)对令牌进行解码。以下是一个解码令牌的示例:

{
 "scope": [ "iot.fil.r", ...],
 "cid": "myApp-myTenant",
 "user_name": "john.doe@example.com",
 "iss": "https://myTenant.piam.myRegion.mindsphere/oauth/token",
 "ten": "myTenant",
 ...
 "subtenant" : "myCustomer",
 ...
}

通过服务凭证的子租户扮演

如果您的应用需要在没有活跃用户对话的子租户的上环境中执行后台作业,您必须选择:

  • 使用 Token Management Service 生成访问所需端点的令牌,并过滤与所需子租户相关的数据的结果。这是首选的方法。
  • 按照此处为您的租户请求服务凭证,并使用 OAuth Authorization Server 创建具有子租户扮演的令牌。对于子租户扮演,您必须在 API 主体调用 https://{tenant_name}.piam.{region}.mindsphere.io/oauth/token 时提供 iam-action 参数和subtenant=<subtenant_id>

POST /oauth/token HTTP/1.1
Host: <tenantName}>.piam.<region>.mindsphere.io
Content-Type:application/x-www-form-urlencoded
Authorization:Basic <ServiceCredentialID:ServiceCredentialSecret as Base64 encoded string>

grant_type=client_credentials&amp;iam-action=client_credentials.subtenant-impersonation&amp;subtenant=mycustomer
返回的令牌包含 subtenant 声明,所有 subtenant-aware 服务都会评估此声明以返回适当的响应:

返回令牌的示例:

{
 "scope": [ ... ]
 "cid": "myServiceCredential-client",
 "iss": "https://myTenant.piam.myRegion.mindsphere.io/oauth/token",
 "ten": "myTenant",
 ...
 "subtenant": "myCustomer",
 ...
}

指南

为了开发一款 subtenancy-aware 的应用,您必须遵守以下规则:

  • 您的应用调用的每个服务都必须能够处理子租户(subtenancy-aware)。Subtenancy-aware MindSphere 服务列表请参考如下
  • 您自己的服务必须在调用中评估子租户声明。您自己服务的设计必须确保子租户的数据保护符合预期的应用行为。

注意

没有遵守上述规则可能导致跨子租户或在非预期的子租户环境中执行的操作信息的公开。 您有责任确保您的应用遵守与预期应用功能相关的信息分离。

Subtenancy-Aware MindSphere Services

Subtenancy-aware 应用可能**只能**调用能够处理子租户的 MindSphere APIs。除非另有说明,这由通过以下角色可获得的端点遵从:

  • mdsp:core:amm.user
    角色授予 Model Management Services 访问权。
  • mdsp:core:analytics.adb.user
    角色授予 Anomaly Detection Batch Services 访问权。
  • mdsp:core:analytics.user
    角色授予 Analytics Services 访问权。
  • mdsp:core:assetmanagement.reporter
    角色允许用户在 Asset Management Service 中读取 ssets、asset types、aspect 类型和文件。
  • mdsp:core:assetmanagement.subtenantuser
    角色允许用户在 Asset Management Service 中读取 asset 和 aspect 类型,读取或更新 assets,读取、更新或删除文件。
  • mdsp:core:dataexch.user
    角色授予 Data Exchange Service 访问权。
  • mdsp:core:em.eventviewer
    角色授予在 Event Management Service 中读取事件和事件类型的访问权。
  • mdsp:core:im.meIamViewer
    角色授予对当前用户信息的访问权,包括在租户用户 Identity Management Service 中分配的角色。
  • mdsp:core:iot.bulkTimUser
    角色授予读取大量时间序列的访问权。
  • mdsp:core:iot.filAdmin
    角色授予读取、编写和删除文件的访问权。
  • mdsp:core:iot.filUser
    角色授予读取文件的访问权。
  • mdsp:core:iot.timUser
    角色授予读取时间序列的访问权。
  • mdsp:core:iot.tsaUser
    角色授予时间序列集合的访问权。
  • mdsp:core:jobmgr.user
    角色授予 Job Manager Services 访问权。
  • mdsp:core:tsm.read-only
    角色查看时间序列监视器配置。

更多的 MindSphere 服务可能在以后成为 subtenancy-aware。

相关链接


Last update: March 22, 2023