Skip to content

在本地开发期间访问 MindSphere APIs

本部分描述了2个在本地开发期间访问 MindSphere APIs 的选项并展示了如何为了此目的而配置 API 开发环境Postman

使用服务凭证访问 MindSphere APIs

服务凭证的有效期是365天。他们可以被用来在 MindSphere 中创建访问令牌而无需登录到您的租户并捕获会话 cookie。但是,使用服务凭证生成的访问令牌具有管理范围,这意味着它不适合测试具有不同用户类型的应用。

先决条件

  • 开发者租户上的 MindSphere 用户帐户。
  • MindSphere 租户 mdsp:core:TenantAdmin 的管理角色。

创建服务凭证

  1. 请像这里描述的一样创建您的服务凭证。
  2. 以 Base64 格式编码服务凭证的组合。

    • 请像下面展示的一样来组合凭证 ID 和密码。

      {credentials_id}:{password}
      
    • 以 Base64 格式编码结果的 string。

生成访问令牌

  1. 发送一个 HTTP 请求到 OAuth Authorization Service:

    POST {tenantName}.piam.{region}.{mindsphere-domain}/oauth/token
    Accept: */*
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic {credentials-in-Base64-format}
    
  2. 从响应中的 access_token 字符段提取访问令牌并在 HTTP 请求的授权报头中将其作为承载令牌发送。

Postman 示例

  1. 创建一个将访问令牌存储在一个全局 variable 中的测试脚本:

    • 发送 HTTP 请求。

      ```http tab="Template" POST {tenantName}.piam.{region}.{mindsphere-domain}/oauth/token

      ```http tab="Example"
      POST my-tenant.piam.eu1.mindsphere.io/oauth/token
      

    • 定义以下报头:

      Key
      Accept */*
      Content-Type application/x-www-form-urlencoded
      Authorization Basic {credentials-in-Base64-format}

      报头常量

    • 编写脚本:

      ```http tab="Template" pm.globals.set("{variable-name}", pm.response.json().access_token );

      ```http tab="Example"
      pm.globals.set("token", pm.response.json().access_token );
      

      脚本

  2. developer.mindsphere.io 下载要访问的API规范。

  3. 复制 YAML 文件的内容。
  4. 在 Postman 里, 选择**导入**和**复制原始文本**。
  5. 粘贴 YAML 文件的内容到编辑器并添加以下内容:

    host: gateway.{region}.mindsphere.io
    
  6. 点击**导入**。

  7. 右键单击新集合并选择**编辑**。
  8. 选择**授权**选择项卡。
  9. 选择授权类型**承载**。
  10. 在**令牌**字符段中输入全局 variable 名称并点击**更新**。
  11. 运行您的步骤1中创建的脚本。这将发出访问令牌并将其存储在全局 variable 中。它自动用于在 HTTP 请求中对前面配置的 API 进行授权。

    授权

使用对话 Cookies 访问 MindSphere APIs

会话 cookie 的有效期最多为12小时并在不活动30分钟后过期。但是,通过分配用户特定的应用角色,可以为管理之外的用户测试应用的行为。

先决条件

  • 开发者租户上的 MindSphere 用户账户。
  • Cloud Foundry Command Line Interface (CF CLI)。
  • 允许推送应用的 Cloud Foundry 角色,例如 SpaceDeveloper
  • MindSphere 开发者角色,mdsp:core:Developer 或者 mdsp:core:DeveloperAdmin
  • 在 MindSphere 上注册的简单应用。

部署和注册应用

  1. 部署应用到 Cloud Foundry 上并且像这里描述的一样,在 Developer Cockpit 中配置它。
  2. 配置应用角色和范围。

    信息

    确保添加访问各自 MindSphere APIs 所需的核心角色。

  3. 注册应用。

  4. 分配一个应用角色到您的用户。

生成用户凭证

  1. 使用网页浏览器登陆应用。
  2. 打开浏览器的开发者工具(按下 F12)。
  3. 导航到 cookies 部分。
    Chrome: 应用 > Cookies
    Firefox: 存储 > Cookies
  4. 复制 SESSIONXSRF-TOKEN cookies。

    信息

    这些用户凭证的有效期最多为12小时并在不活动30分钟后过期。通过在应用中实现 ping 功能,可以避免超时。

cURL 示例

以下的代码块显示了在 cURL 命令中设置用户凭证的示例脚本 ——— 占位符使用尖括号 <> 表示。

#!/bin/bash

TOKEN="<token-copied-from-browser>"
SESSION="<session-cookie-copied-from-browser>"

curl -vv \
  -G \
  --cookie "SESSION=${SESSION};XSRF-TOKEN=${TOKEN}" \
  --data 'filter=dir*' \
  -X GET \
  https://<tenantId>-<appId>-<tenantId>.<regionId>.mindsphere.io/api/dataexchange/v3/directories/_PRIVATE_ROOT_ID

Postman 示例

  1. 输入要执行的 HTTP 请求,按照以下的模式:

    ```cmd tab="Template" https://{appName}.{region}.{mindsphere-domain}/{MindSphere-API}

    ```cmd tab="Example"
    https://my-app.eu1.mindsphere.io/api/iottimeseries/v3/assets
    

  2. 点击**发送**按钮下的 Cookies 链接。

  3. 输入应用域 my-tenant.eu1.mindsphere.io,点击**添加**。
  4. 添加两个 cookies:

    Key
    SESSION SESSION={session-cookie-copied-from-browser}; path=/; domain=.my-app.eu1.mindsphere.io;
    XSRF-TOKEN XSRF-TOKEN={token-copied-from-browser}; path=/; domain=.my-app.eu1.mindsphere.io;
  5. 发送 HTTP 请求。


Last update: March 22, 2023