生成授权令牌或 API 密钥

重要信息: IBM Cloud Pak® for Data 4.6 版本将于 2025 年 7 月 31 日结束支持 (EOS)。 如需了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告

IBM Cloud Pak for Data 4.6 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。

生成授权令牌或 API 密钥以向 Cloud Pak for Data API 进行认证。

令牌和 API 密钥将接受授权检查。 API 端点的调用取决于在 Cloud Pak for Data 平台和服务中授予的角色和许可权。

您可以使用 API 密钥来生成不记名令牌,该令牌可用于授权访问 Cloud Pak for Data 端点。

或者,您可以使用 username 和 API 密钥作为具有 ZenApiKey 授权的 base64-encoded 令牌,而不是使用不记名令牌。 此替代方法需要对端点进行一次 API 调用。

注: 某些 API 不支持 ZenApiKey 授权。

过程

使用以下三种方法之一来生成 API 密钥或授权令牌以向 API 端点进行认证。
正在获取 API 密钥 (首选)。

请参阅 生成用于认证的 API 密钥。 当 SAML 2.0 配置为 Web SSO 时,可以使用此方法。

您还可以使用以下命令生成 ZenApiKey 令牌。
echo "<username>:<api_key>" | base64
然后,可以使用 ZenApiKey 向端点进行认证。
curl -H "Authorization: ZenApiKey <token>" "https://<cpd_instance_route>/<endpoint>"
Watson 数据 API 和 Watson Machine Learning API 不支持 ZenApiKey 授权。 必须使用 API 密钥通过 authorize 端点生成不记名令牌。
端点
/icp4d-api/v1/authorize
方法
POST
命令语法

<cpd_instance_route><username><api_key> 替换为适用于您的环境的正确值。

curl -X POST \
  'https://<cpd_instance_route>/icp4d-api/v1/authorize'\
  -H 'Content-Type: application/json' \
  -d' {
    "username":<username>,
    "api_key":<api_key>
}'

此命令返回包含授权令牌的响应。

样本响应
{
    "_messageCode_": "200",
    "message": "Success",
    "token": "<authorization-token>"
}

该授权令牌可在后续的 API 调用中使用。

更多信息
另请参阅 Cloud Pak for Data Platform API 中的获取授权令牌

启用 LDAP 时获取授权令牌。
如果未启用 Identity and Access Management (IAM) ,那么可以通过对 validateAuth 端点使用用户名和密码来生成令牌。
端点
/v1/preauth/signin
方法
POST
命令语法

<cpd_instance_route><username><password> 替换为适用于您的环境的正确值。

curl -X POST \
  'https://<cpd_instance_route>/v1/preauth/signin'\
  -H 'Content-Type: application/json' \
  -d' {
    "username":<username>,
    "password":<password>
}'

此命令返回包含授权令牌的响应。

样本响应
{
    "_messageCode_": "200",
    "message": "Success",
    "token": "<authorization-token>"
}

该授权令牌可在后续的 API 调用中使用。

更多信息
另请参阅 Cloud Pak for Data Platform API 中的获取授权令牌

启用 IAM 时获取授权令牌。
如果启用了 IAM,那么可以使用针对 /idprovider/v1/auth/identitytoken 端点的用户名和密码生成令牌。 执行以下步骤,将 <variables> 替换为适用于您的环境的正确值。
  1. 使用以下 cURL 命令获取 IAM 访问令牌。
    curl -k -X POST -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \
    -d "grant_type=password&username=<username>&password=<password>&scope=openid" \
    https://<common-services-route>/idprovider/v1/auth/identitytoken
    替换以下值。
    • <username> 是您的用户名。
    • <password> 是您的密码。
    • <common-services-route> 是访问 IBM Cloud Pak foundational services的路径。

    此命令返回 access_tokenrefresh_tokenid_token。 分配给 access_token 的值是您在下一步中获取平台 UI 访问令牌时所需的内容。

  2. 通过运行以下 cURL 命令获取平台 UI 访问令牌。
    curl -k -X GET 'https://<cpd_instance_route>/v1/preauth/validateAuth' \
    -H 'username: <username>' \
    -H 'iam-token: <access-token>'
    
    替换以下值。
    • <cpd_instance_route>Cloud Pak for Data Web 客户机的路径。 缺省情况下,此 URL 为 https://cpd-<namespace>.apps.<OCP-default-domain>
    • <username> 是您的用户名。
    • <access-token> 是从上一步中的响应获取的 IAM 访问令牌。
    cURL 响应可能类似于以下样本。
    {
    
    "_messageCode_": "200",
    "message": "Success",
    "token": "<encoded-token-string>"
    }

    在此示例中, <encoded-token-string> 是您的平台 UI 访问令牌。


下一步操作

对于大多数 Cloud Pak for Data 端点,您可以在后续 API 调用的授权头中使用生成的 API 密钥。
curl -H "Authorization: ZenApiKey <token>" "https://<cpd_instance_route>/<endpoint>"
如果 ZenApiKey 令牌不受支持,请在后续 API 调用的授权头中使用生成的不记名令牌。
curl -H "Authorization: Bearer <token>" "https://<cpd_instance_route>/<endpoint>"