生成不记名令牌

生成不记名令牌以向 Cloud Pak for Data API 进行认证。 如果 API 不支持 ZenApiKey 授权令牌,请使用此过程。

关于本任务

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

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

过程

使用以下三种方法之一生成授权令牌以向 API 端点进行认证。

获取不记名令牌

某些 API 和 API 不支持 ZenApiKey 授权。

您可以生成 API 密钥,以使用 Cloud Pak for Data Web 客户机获取 API 授权令牌。 有关更多信息,请参阅生成用于认证的 API 密钥

使用 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": "<bearer-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. 使用以下命令来查找用于访问 IBM Cloud Pak foundational services的路径。
    oc get route cp-console -n ${PROJECT_CPD_INST_OPERANDS}

    此命令返回 <common-services-route>。 例如, https://cp-console-cpd-instance.apps.ivt487.cp.example.com

  2. 使用以下 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> 是用于访问集群的路径。

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

  3. 通过运行以下 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> 是从步骤 2中的响应获取的 IAM 访问令牌。
    cURL 响应可能类似于以下样本。
    {
        "_messageCode_": "200",
        "message": "Success",
        "token": "<authorization-token>"
    }

下一步操作

如果 ZenApiKey 令牌不受支持,请在后续 API 调用的授权头中使用生成的不记名令牌。

curl -H "Authorization: Bearer <token>" "https://<cpd_instance_route>/<endpoint>"