Automatizar tarefas para IdPs externos

Ao usar um IdP externo com a API Edge, o processo usado para receber tokens de acesso e atualização do OAuth2 da interação do IdP é chamado de fluxo de senha. Com o fluxo de senha, você usa um navegador para gerar uma senha única e usar os tokens OAuth2.

No entanto, seu ambiente de desenvolvimento pode oferecer suporte à automação de tarefas comuns de desenvolvimento, como automação de testes ou CI/CD. Para automatizar essas tarefas quando um IdP externo estiver ativado, você precisa de uma maneira de receber e atualizar tokens OAuth2 sem precisar copiar/colar uma senha de um navegador.

O Edge oferece suporte à geração automatizada de tokens pelo uso de usuários de máquina em organizações que têm um IdP ativado. O usuário da máquina pode receber tokens OAuth2 sem precisar especificar uma senha. Isso significa que é possível automatizar completamente o processo de recebimento e atualização de tokens OAuth2 usando a API de gerenciamento de borda.

Há duas maneiras de criar um usuário de máquina para uma organização ativada pelo IdP:

Cada um desses métodos é descrito nas seções a seguir.

Não é possível criar um usuário de máquina para organizações que não têm um IdP externo ativado.

Criar um usuário de máquina com apigee-ssoadminapi.sh

Use o utilitário apigee-ssoadminapi.sh para criar um usuário de máquina em uma organização ativada para o IdP. Para saber mais, consulte Como usar o apigee-ssoadminapi.sh. É possível criar um usuário de máquina único para ser usado por todas as suas organizações ou criar um usuário de máquina separado para cada organização.

O usuário da máquina é criado e armazenado no repositório de dados do Edge, não no IdP. Portanto, você não é responsável por manter o usuário da máquina usando a IU e a API Edge Management.

Ao criar o usuário da máquina, especifique um endereço de e-mail e uma senha. Depois de criar o usuário da máquina, você o atribui a uma ou mais organizações.

Para criar um usuário de máquina com apigee-ssoadminapi.sh:

  1. Use o seguinte comando apigee-ssoadminapi.sh para criar o usuário da máquina:
    apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \
      --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \
      -u machine_user_email -p machine_user_password

    QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?

    Em que:

    • SSO_ADMIN_NAME é o nome de usuário do administrador definido pela propriedade SSO_ADMIN_NAME no arquivo de configuração usado para configurar o módulo SSO da Apigee. O padrão é ssoadmin.
    • SSO_ADMIN_SECRET é a senha do administrador conforme especificado pela propriedade SSO_ADMIN_SECRET no arquivo de configuração.

      Nesse exemplo, é possível omitir os valores de --port e --ssl porque o módulo apigee-sso usa os valores padrão de 9099 para --port e http para --ssl. Se a instalação não usar esses padrões, especifique-os conforme apropriado.

  2. Faça login na interface do Edge, adicione o e-mail do usuário da máquina às suas organizações e atribua ao papel necessário. Consulte Como adicionar usuários globais para saber mais.

Criar um usuário de máquina com a API Edge Management

É possível criar um usuário da máquina usando a API Edge Management em vez de usar o utilitário apigee-ssoadminapi.sh.

Para criar um usuário de máquina com a API Management:

  1. Use o comando curl a seguir para receber um token para o usuário ssoadmin, o nome de usuário da conta de administrador de apigee-sso:
    curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \
      -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \
      -d "response_type=token" -d "grant_type=client_credentials" \
      --data-urlencode "client_secret=SSO_ADMIN_SECRET" \
      --data-urlencode "client_id=ssoadmin"

    Em que SSO_ADMIN_SECRET é a senha do administrador que você definiu quando instalou apigee-sso, conforme especificado pela propriedade SSO_ADMIN_SECRET no arquivo de configuração.

    Esse comando exibe um token que você precisa para fazer a próxima chamada.

  2. Use o seguinte comando curl para criar o usuário da máquina, transmitindo o token que você recebeu na etapa anterior:
    curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \
      -H "Accept: application/json" -H "Content-Type: application/json" \
      -d '{"userName" : "machine_user_email", "name" :
        {"formatted":"DevOps", "familyName" : "last_name", "givenName" :
        "first_name"}, "emails" : [ {"value" :
        "machine_user_email", "primary" : true } ], "active" : true,
        "verified" : true, "password" : "machine_user_password" }' \
      -H "Authorization: Bearer token"

    Você precisará da senha do usuário da máquina em etapas posteriores.

  3. Faça login na interface do Edge.
  4. Adicione o e-mail do usuário da máquina às suas organizações e atribua a ele o papel necessário. Consulte Como adicionar usuários globais para saber mais.

Receber e atualizar tokens de usuário da máquina

Use a API Edge para receber e atualizar tokens OAuth2 transmitindo as credenciais do usuário da máquina, em vez de uma senha.

Para receber tokens OAuth2 para o usuário da máquina:

  1. Use a seguinte chamada de API para gerar os tokens de acesso e atualização iniciais:
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://Edge_SSO_IP_DNS:9099/oauth/token -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Salvar os tokens para uso posterior.

  2. Transmita o token de acesso para uma chamada da API de gerenciamento do Edge como o cabeçalho Bearer, como o exemplo a seguir mostra:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    em que org_name é o nome da organização que contém o usuário da máquina.

  3. Para atualizar posteriormente o token de acesso, use a seguinte chamada que inclui o token de atualização:
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://edge_sso_IP_DNS:9099/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken'