Ao usar um IDP externo com a API Edge, o processo usado para receber tokens de acesso e tokens de 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 de uso único que será usada para receber 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 está 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 usando usuários de máquina em organizações que têm 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 obtenção e atualização de tokens OAuth2 usando a API Management do Edge.
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
Use o utilitário apigee-ssoadminapi.sh
para criar um usuário de máquina em uma organização com IDP ativado. Consulte Como usar
apigee-ssoadminapi.sh para mais informações. É possível criar um único usuário de máquina que seja usado por todas as
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 IDP. Portanto, você não é responsável por manter o usuário da máquina usando a IU e a API de gerenciamento do Edge.
Ao criar o usuário de máquina, especifique 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 seguinte comando
apigee-ssoadminapi.shpara 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
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 de SSO da Apigee. O padrão éssoadmin. - SSO_ADMIN_SECRET é a senha de administrador, conforme especificado 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 IU 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 informações.
Criar um usuário de máquina com a API de gerenciamento da borda
É possível criar um usuário de máquina usando a API Management do Edge em vez do utilitário apigee-ssoadminapi.sh.
Para criar um usuário de máquina com a API Management:
- Use o seguinte comando
curlpara receber um token para o usuáriossoadmin, o nome de usuário da conta de administrador deapigee-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 que você definiu ao instalar o
apigee-sso, conforme especificado pela propriedadeSSO_ADMIN_SECRETno arquivo de configuração.Esse comando exibe um token que você precisa para fazer a próxima chamada.
- Use o seguinte comando
curlpara 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 da máquina nas próximas etapas.
- Faça login na interface do Edge.
- Adicione o e-mail do usuário de máquina às suas organizações e atribua o papel necessário a ele. Consulte Como adicionar usuários globais para saber mais.
Obter e atualizar tokens de usuário de 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:
- Use a seguinte chamada de API para gerar os tokens de acesso e de 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 Management da Edge como o cabeçalho
Bearer, 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 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'