Automatizar tarefas para IdPs externos

Ao usar um IDP externo com a API Edge, o processo usado para acessar o OAuth2 os tokens de acesso e atualização da interação do IdP são chamados de fluxo de senha. Com o fluxo de senha, você usa um navegador para obter uma senha única, que será usada para acessar o OAuth2 tokens.

No entanto, seu ambiente de desenvolvimento pode oferecer suporte à automação para 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 forma de adquirir e atualizar tokens OAuth2 sem ter que copiar/colar uma senha de um navegador.

O Edge dá suporte à geração automatizada de tokens pelo uso de usuários de máquinas nas organizações com um IdP ativado. Um usuário de 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 Edge Management.

Há duas maneiras de criar um usuário de máquina para uma organização com 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

Usar a apigee-ssoadminapi.sh para criar um usuário de máquina em uma organização com IdP. Consulte Como usar apigee-ssoadminapi.sh para saber mais. É possível criar um único usuário de máquina para ser usado por todos 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 armazenamento de dados do Edge, não no seu IdP. Portanto, você não são responsáveis por manter o usuário da máquina usando a interface e o gerenciamento de borda API.

Ao criar o usuário da máquina, especifique um endereço de e-mail e uma senha. Depois criando 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 de 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 de administrador definido pelo SSO_ADMIN_NAME no arquivo de configuração usado para definir o Módulo SSO da Apigee. O padrão é ssoadmin.
    • SSO_ADMIN_SECRET é a senha do administrador, conforme especificada pelo SSO_ADMIN_SECRET no arquivo de configuração.

      Neste exemplo, é possível omitir os valores de --port e --ssl porque o módulo apigee-sso usa o padrão de 9099 para --port e http para --ssl. Se as não usa 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 o usuário da máquina ao papel necessário. Consulte Como adicionar usuários globais para mais.

Criar um usuário de máquina com o Edge API de gerenciamento

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

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

  1. Use o seguinte comando curl para obter 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"

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

    Esse comando exibe um token necessário 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ê recebidas 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ê vai precisar da senha do usuário da máquina nas 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 o usuário à 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 o token do usuário credenciais, 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 iniciais de acesso e 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 -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Guarde os tokens para uso posterior.

  2. Transmita o token de acesso para uma chamada da API Edge Management como o cabeçalho Bearer, conforme 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 o token de acesso mais tarde, use a seguinte chamada que o inclui:
    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'