生成不记名令牌

在无法使用 ZenApiKey 授权令牌的极少数情况下,您可以使用您的凭据生成一个不记名令牌。 IBM watsonx 凭证生成不记名令牌。 您可以使用不记名标记来验证 IBM watsonx 应用程序接口和访问 IBM watsonx 端点。

关于此任务

令牌和 API 密钥将接受授权检查。 API 端点的调用取决于您在平台和服务中被授予的角色和权限。

重要提示: 某些 cURL 命令仅支持特定的身份验证方法。 启用 SAML SSO 后,必须使用 API 密钥进行身份验证。

如果要使用 API 密钥进行身份验证以生成不记名令牌,请先生成 API 密钥。 有关更多信息,请参阅生成用于身份验证的 API 密钥

过程

  1. 若需使用用户名 Red Hat® OpenShift® 和密码进行身份验证,但用户名 OpenShift 未包含前缀 IAM#,则需将 roksUserPrefix 参数更新为空值以移除该必填前缀。
    1. 运行以下命令,直接从身份验证自定义资源 roksUserPrefix (CR)进行更新:
      oc patch Authentication.operator.ibm.com example-authentication \
      --type=merge \
      -p '{"spec":{"config":{"roksUserPrefix":""}}}'

      执行该命令后,平台容器应自动重启。

    2. 运行以下命令以检查是否 roksUserPrefix 已打补丁:
      oc get Authentication.operator.ibm.com example-authentication \
      -o jsonpath='{.spec.config.roksUserPrefix}'

    有关的更多 roksUserPrefix信息,请参见 将身份验证委托给 OpenShift

  2. 使用以下 cURL 命令之一调用 API。 选择使用要验证的凭证的命令。
    • 使用用户名和密码进行验证:
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
              "username": "<username>",
              "password": "<password>"
      }'
    • 使用密码进行身份验证,同时验证自签名证书:
      curl -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          --cacert /<path_to_root-ca>.crt
          -H "Content-Type: application/json" \
          -d "{
              "username": <username>,
              "password": <password>
      }"

      如果证书是由正规的根证书颁发机构(CA)签署的,那么就不需要 -k--cacert 参数,因为 curl 已经知道根 CA 的存在。

    • 使用 API 密钥进行验证:
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
            "username":"<username>",
            "api_key":"<api_key>"
      }'

    <instance_route> 替换为服务实例的详细信息。 将 <username><password><api_key> 替换为您的 IBM watsonx 证书。 如果使用自签名证书,则也要替换 <path_to_root-ca>

此命令返回包含不记名令牌的响应。
{
    "_messageCode_": "200",
    "message": "Success",
    "accessToken": "<bearer-token>"
}

有关端 /icp4d-api/v1/authorize 点的更多信息,请参阅平台 IBM® Software Hub API 中的获取授权令牌

后续操作

在后续 API 调用的授权标头中使用您生成的承载令牌。

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