生成不记名令牌
生成不记名令牌以向 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> 替换为适用于您的环境的正确值。- 使用以下命令来查找用于访问 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。 - 使用以下 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_token、refresh_token和id_token。 分配给access_token的值是您在下一步中获取平台 UI 访问令牌时所需的内容。 - 通过运行以下 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>" }
- 使用以下命令来查找用于访问 IBM Cloud Pak foundational services的路径。
下一步操作
如果 ZenApiKey 令牌不受支持,请在后续 API 调用的授权头中使用生成的不记名令牌。
curl -H "Authorization: Bearer <token>" "https://<cpd_instance_route>/<endpoint>"