Gerando um token de acesso

Em raros cenários em que não é possível usar tokens de autorização ZenApiKey , você pode gerar um token de portador usando suas Data Fabric credenciais. Você pode usar o token de portador para se autenticar em Data Fabric APIs e acessar Data Fabric endpoints.

Por exemplo, se você tiver o SAML SSO ativado e precisar gerar programaticamente uma chave de API para um usuário do serviço, não poderá fazer login na interface do usuário com um nome de usuário e senha para gerar a chave de API. E você precisa de um ZenApiKey para gerar uma chave de API programaticamente com o ponto de extremidade Get API key . No entanto, você ainda pode gerar um token de portador para criar uma chave de API usando o ponto de extremidade Get API key .

Sobre esta tarefa

Tokens e chaves API estão sujeitos a verificações de autorização. A invocação de pontos de extremidade da API depende da função e das permissões concedidas a você na plataforma e nos serviços.

Importante: Alguns cURL comandos funcionam apenas com alguns métodos de autenticação. Quando o SAML SSO está ativado, você deve se autenticar com uma chave de API.

Se você quiser se autenticar com uma chave de API para gerar um token de portador, gere a chave de API primeiro. Para obter mais informações, consulte Geração de chaves de API para autenticação.

Procedimento

  1. Se você deseja autenticar com um Red Hat® OpenShift® nome de usuário e senha, mas o OpenShift nome de usuário não contém o prefixo IAM#, então você precisa atualizar o roksUserPrefix parâmetro com um valor vazio para remover o prefixo necessário.
    1. Execute o seguinte comando para atualizar roksUserPrefix diretamente a partir do recurso personalizado de autenticação (CR):
      oc patch Authentication.operator.ibm.com example-authentication \
      --type=merge \
      -p '{"spec":{"config":{"roksUserPrefix":""}}}'

      Depois de executar o comando, os pods da plataforma devem reiniciar automaticamente.

    2. Execute o seguinte comando para verificar se roksUserPrefix foi corrigido:
      oc get Authentication.operator.ibm.com example-authentication \
      -o jsonpath='{.spec.config.roksUserPrefix}'

    Para obter mais informações sobre roksUserPrefix, consulte Delegando autenticação para OpenShift

  2. Chame a API usando um dos seguintes comandos do site cURL. Escolha o comando que usa as credenciais com as quais você deseja se autenticar.
    • Autentique-se com um nome de usuário e uma senha:
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
              "username": "<username>",
              "password": "<password>"
      }'
    • Autenticar com uma senha e também validar um certificado autoassinado:
      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>
      }"

      Se o certificado for assinado por uma autoridade de certificação (CA) raiz adequada, os parâmetros -k e --cacert não serão necessários porque o curl já conhece a CA raiz.

    • Autenticar com uma chave de API:
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
            "username":"<username>",
            "api_key":"<api_key>"
      }'

    Substitua <instance_route> pelos detalhes da instância de serviço. Substitua <username>, <password> e <api_key> por suas Data Fabric credenciais. Se você usar um certificado autoassinado, substitua também <path_to_root-ca> .

Esse comando retorna uma resposta que contém o token de acesso.
{
    "_messageCode_": "200",
    "message": "Success",
    "accessToken": "<bearer-token>"
}

Para obter mais informações sobre os /icp4d-api/v1/authorize endpoints, consulte Obter token de autorização na API IBM® Software Hub da plataforma.

O que fazer em seguida

Use o token de portador que você gerou no cabeçalho de autorização das chamadas de API subsequentes.

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