Skip to content

从 MindSphere 外部应用访问 MindSphere API

本部分描述了自托管应用如何在不集成到 MindSphere 的情况下访问 MindSphere APIs。这样您就可以利用 MindSphere 服务来扩展自己开发的应用。

本入门指南将分步骤介绍各项内容,引导您完成基本设置。

信息

自托管应用可以被集成到 MindSphere中。

先决条件

在开始学习本指南内容之前,您需要做如下准备:

  • MindAccess DevOps Plan - 这是您的 MindSphere 账户(租户)。
  • 出站流量升级 - 包括用于在 MindSphere 平台之外使用 MindSphere 服务所需的数据量。要进行升级,您的租户管理员需要联系其指定的客户经理或客户成功经理。
  • mdsp:core:TenantAdmin 角色

说明

只有技术用户(如应用)才需要服务凭证。如果需要,应用可以使用 Token Management Service 访问其它租户的数据。

创建服务凭证

要新建服务凭证或更新现有服务凭证,您必须发出服务请求。联系 GTAC(全球技术访问中心)或在 MindSphere Launchpad 中使用以下模板填写 MindSphere 支持表单:

Subject:Request for [new|updated] Service Credentials for self-hosted application

Dear MindSphere Support,

Please [create new|update existing] Service Credentials for the tenant with the following parameters:

Tenant name: {tenantName}
Account type: {Developer (Dev) or Operator (Ops)}
Service Credentials ID: {name for the service credentials set}
Include subtenant impersonation: {yes/no. Whether to include the capability to request tokens that are restricted to a specific subtenant}

始终基于您的请求提供服务凭证 ID。服务凭证 ID 是一个唯一的标识符,每个服务凭证 ID 都对应一个签发的秘钥,服务凭证 ID 的作用相当于用户名和密码。以下规则适用:

  • 允许的字符:[a-z][A-Z][0-9]-_.
  • 最小长度:8
  • 最大长度:32
  • 必须在您的租户中是唯一的

通过验证后,您将安全地收到所请求的服务凭证。服务凭证的有效期最长是 365 天。可以通过签发一对新凭证或更改密码将有效期延长 356 天。

说明

如果您通过 MindSphere Launchpad 上的 MindSphere 支持表单提出请求,则无需提供租户名称。从上述模板中删除所有特殊字符。

如果您通过 GTAC 提出请求,请在发给租户管理员的欢迎信中查找您的租户的名称。

注意

  • 服务凭证是基于账户创建的。如果您遵循我们的 DevOps 应用生命周期,您需要为您的开发账户提供一组服务凭证,为您的操作员账户提供另一组服务凭证。
  • 移动应用不能使用服务凭证。请参阅本指南了解如何在本地移动应用中集成 MindSphere 应用。
  • 必须确保每个应用实例仅使用一组服务凭证。如果凭证损坏,这可确保只影响系统的一部分。
  • 服务凭证的有效期最长是 365 天。可以通过签发一对新凭证或更改密码将有效期延长 356 天。

生成令牌

本部分将介绍如何使用服务凭证生成令牌。

使用以下消息头和正文 (grant_type=client_credentials) 调用以下端点:https://{tenantName}.piam.{region}.{mindsphere-domain}/oauth/token

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

grant_type=client_credentials

要获取令牌,请在 200 成功响应中检索 access_token

以下示例演示如何使用 curljq 请求访问_令牌

curl -s \
 -H "Authorization:Basic $(echo -n {ServiceCredentialID}:{ServiceCredentialSecret} | base64)" \
 -H "Content-Type:application/x-www-form-urlencoded" \
 -d "grant_type=client_credentials" \
 -X POST https://{tenantName}.piam.{region}.{mindsphere-domain}/oauth/token | jq -r .access_token

信息

签发的令牌有效期为 30 分钟。在 30 分钟有效期过后,您必须重新申请令牌。

调用 MindSphere 端点

使用以下消息头密钥创建另一个对 API 端点的请求:

Authorization:Bearer {token}
Content-Type:application/x-www-form-urlencoded

以下示例显示如何通过 Identity Management API 请求您账户下的所有用户的列表。请注意,在此示例中,区域指定为 eu1

GET /api/identitymanagement/v3/Users HTTP/1.1
Host:gateway.eu1.mindsphere.io
Authorization:Bearer {token}

信息

如果将有效令牌传给 Bearer {token},您将只收到成功响应。这样您就可以使用所有的 MindpShere API。

代码示例 (Python3)

我们使用 Python3请求 _oauthlib 连接到 MindSphere IAM API。

在此示例中,您从 IAM 服务获取一个令牌,并使用它来获取所有用户并打印角色为 mdsp:core:StandardUser 的用户。用您的租户名称和区域替换下面代码中的占位符 {tenantName}{region}

信息

您需要通过以下命令安装相关项:

pip install requests requests_oauthlib
from oauthlib.oauth2 import BackendApplicationClient
from requests_oauthlib import OAuth2Session

# 在此处添加您的账户名称
refresh_url = 'https://{tenantName}.piam.{region}.{mindsphere-domain}/oauth/token'

# 在此输入您的服务用户凭证
credentials = {
 'client_id': '{ServiceCredentialID}',
 'client_secret':r'{ServiceCredentialSecret}',
}

# 创建后端客户端并检索令牌
oauthclient = BackendApplicationClient(client_id=credentials['client_id'])
oauthsession = OAuth2Session(client=oauthclient)
token = oauthsession.fetch_token(token_url=refresh_url, client_id=credentials['client_id'],
 client_secret=credentials['client_secret'])

# 使用令牌创建会话
client = OAuth2Session(client_id=credentials['client_id'], token=token)

# 获取租户的所有用户的列表
r = client.get('https://gateway.{region}.{mindsphere-domain}/api/identitymanagement/v3/Users')

# 列出具有 mdsp:core:StandardUser 角色的用户
users = r.json()['resources']
for user in users:
 roles = user['groups']
 for role in roles:
 if role['display'] == 'mdsp:core:StandardUser':
 print(user['userName'])

相关链接

还有问题?

向社区提问


除非另行声明,该网站内容遵循MindSphere开发许可协议.


Last update: July 1, 2019