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 receber uma senha única que é usada para receber tokens do OAuth2.
No entanto, o 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 está ativado, é necessário uma maneira de receber e atualizar tokens do OAuth2 sem precisar copiar/colar uma senha de um navegador.
O Edge oferece suporte à geração automatizada de tokens usando usuários de máquinas em organizações que têm um IDP ativado. Um usuário de máquina pode receber tokens do OAuth2 sem precisar especificar uma senha. Isso significa que você pode automatizar completamente o processo de recebimento e atualização de tokens do OAuth2 usando a API de gerenciamento do Edge.
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 ativaram um IDP externo.
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 pelo IDP. Consulte Como usar
apigee-ssoadminapi.sh para mais informações. É possível criar um único usuário de máquina usado por todas as
organizações ou criar um usuário de máquina separado para cada organização.
O usuário de máquina é criado e armazenado no datastore do Edge, não no IDP. Portanto, você não é responsável por manter o usuário de máquina usando a interface do Edge e a API de gerenciamento do Edge.
Ao criar o usuário de máquina, é necessário especificar um endereço de e-mail e uma senha. Depois de criar o usuário de máquina, atribua-o a uma ou mais organizações.
Para criar um usuário de máquina com apigee-ssoadminapi.sh:
- Use o comando
apigee-ssoadminapi.sha seguir 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
Em que:
- SSO_ADMIN_NAME é o nome de usuário do administrador definido pela propriedade
SSO_ADMIN_NAMEno arquivo de configuração usado para configurar o módulo SSO da Apigee. O padrão éssoadmin. - SSO_ADMIN_SECRET é a senha do administrador especificada pela propriedade
SSO_ADMIN_SECRETno arquivo de configuração.Neste exemplo, é possível omitir os valores de
--porte--sslporque o móduloapigee-ssousa os valores padrão de 9099 para--porte http para--ssl. Se a instalação não usar esses padrões, especifique-os conforme apropriado.
- SSO_ADMIN_NAME é o nome de usuário do administrador definido pela propriedade
- Faça login na interface do Edge e adicione o e-mail do usuário de máquina às suas organizações e atribua o usuário de máquina ao papel necessário. Consulte Adicionar usuários globais para mais informações.
Criar um usuário de máquina com a API de gerenciamento do Edge
É possível criar um usuário de máquina usando a API de gerenciamento do Edge em vez do
apigee-ssoadminapi.sh utilitário.
Para criar um usuário de máquina com a API de gerenciamento:
- Use o comando
curla seguir para receber um token para o usuáriossoadmin, o nome de usuário da conta de administrador paraapigee-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 de administrador definida ao instalar
apigee-ssoconforme especificado pela propriedadeSSO_ADMIN_SECRETno arquivo de configuração.Esse comando mostra um token necessário para fazer a próxima chamada.
- Use o comando
curla seguir para criar o usuário de 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ê vai precisar da senha do usuário de máquina nas etapas posteriores.
- Faça login na interface do Edge.
- Adicione o e-mail do usuário de máquina às suas organizações e atribua o usuário de máquina ao papel necessário. Consulte Adicionar usuários globais para mais informações.
Receber e atualizar tokens de usuário de máquina
Use a API Edge para receber e atualizar tokens do OAuth2 transmitindo as credenciais do usuário de máquina, em vez de uma senha.
Para receber tokens do OAuth2 para o usuário de máquina:
- Use a chamada de API a seguir 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'
Salve os tokens para uso posterior.
- Transmita o token de acesso para uma chamada de API de gerenciamento do Edge como o
Bearercabeçalho, conforme mostrado no exemplo a seguir: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 de máquina.
- Para atualizar o token de acesso mais tarde, use a chamada a seguir 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'