Usar um IdP externo com a API Edge Management

A autenticação básica é uma maneira de autenticar ao fazer chamadas para a API de gerenciamento do Edge. Por exemplo, é possível fazer a seguinte solicitação curl à API de gerenciamento do Edge para acessar informações sobre sua organização:

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Neste exemplo, você usa a opção curl -u para transmitir credenciais de autenticação básica. Como alternativa, é possível transmitir um token OAuth2 no cabeçalho Bearer para fazer chamadas de API de gerenciamento do Edge, como mostra o exemplo a seguir:

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Depois de ativar um IdP externo para autenticação, é possível desativar a autenticação básica. Se você desativar a autenticação básica, todos os scripts (como Maven, shell e apigeetool) que dependem de chamadas de API de gerenciamento da Edge compatíveis com a autenticação básica deixarão de funcionar. Atualize todas as chamadas de API e scripts que usam a autenticação básica para transmitir tokens de acesso do OAuth2 no cabeçalho Bearer.

Receber e atualizar tokens com get_token

O utilitário get_token troca suas credenciais de autenticação básica (e, em alguns casos, uma senha) por um token de acesso e token de atualização do OAuth2. O utilitário get_token aceita suas credenciais e retorna um token de acesso válido. Se um token puder ser atualizado, o utilitário o atualizará e o retornará. Se o token de atualização expirar, as credenciais do usuário serão solicitadas.

O utilitário get_token armazena os tokens no disco, prontos para uso quando necessário. Ele também imprime um token de acesso válido para stdout. Em seguida, use uma extensão de navegador, como o Postman, ou incorpore-o em uma variável de ambiente para uso no curl.

Para receber um token de acesso do OAuth2 para fazer chamadas de API de gerenciamento do Edge:

  1. Faça o download do pacote sso-cli:
    curl http://EDGE_SSO_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    Em que EDGE_SSO_IP_DNS é o endereço IP ou o nome DNS da máquina que hospeda o módulo de SSO da Apigee. Se você configurou o TLS no SSO da Apigee, use https e o número de porta TLS correto.

  2. Descompacte o pacote ssocli-bundle.zip, como mostra o exemplo a seguir:
    unzip ssocli-bundle.zip
  3. Instale get_token em /usr/local/bin, como mostra o exemplo a seguir:
    ./install -b PATH

    A opção -b especifica um local diferente.

  4. Defina a variável de ambiente SSO_LOGIN_URL como o URL de login, no seguinte formato:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    Em que EDGE_SSO_IP_DNS é o endereço IP da máquina que hospeda o módulo de SSO da Apigee. Se você configurou o TLS no SSO da Apigee, use https e o número de porta TLS correto.

  5. (Somente SAML) Em um navegador, acesse o URL a seguir para receber uma senha de uso único:
    http://EDGE_SSO_IP_DNS:9099/passcode

    Se você configurou o TLS no SSO da Apigee, use https e o número de porta TLS correto.

    Essa solicitação retorna uma senha de uso único que permanece válida até que você atualize esse URL para receber uma nova senha ou use a senha com get_token para gerar um token de acesso.

    Só é possível usar uma senha ao autenticar com um IDP SAML. Não é possível usar uma senha para autenticar com um IDP LDAP.

  6. Invoque get_token para receber o token de acesso do OAuth2, como mostra o exemplo a seguir:
    get_token -u EMAIL_ADDRESS

    Em que EMAIL_ADDRESS é o endereço de e-mail de um usuário do Edge.

    (Somente SAML) Digite a senha na linha de comando, além do endereço de e-mail, conforme mostrado no exemplo a seguir:

    get_token -u EMAIL_ADDRESS -p PASSCODE

    O utilitário get_token recebe o token de acesso do OAuth2, o exibe na tela e o grava, junto com o token de atualização, em ~/.sso-cli.

  7. Transmita o token de acesso para uma chamada de API Management do Edge como o cabeçalho Bearer, conforme mostrado no exemplo a seguir:
    curl -H "Authorization: Bearer ACCESS_TOKEN"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. Depois de receber um novo token de acesso pela primeira vez, é possível recebê-lo e transmiti-lo para uma chamada de API em um único comando, como mostra o exemplo a seguir:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    Com essa forma do comando, se o token de acesso tiver expirado, ele será atualizado automaticamente até que o token de atualização expire.

(Somente SAML) Depois que o token de atualização expira, o get_token solicita uma nova senha. Acesse o URL mostrado acima na etapa 3 e gere uma nova senha antes de gerar um novo token de acesso OAuth.

Usar a API Management para receber e atualizar tokens

Usar a segurança do OAuth2 com a API de gerenciamento do Apigee Edge mostra como usar a API de gerenciamento do Edge para receber e atualizar tokens. Também é possível usar chamadas de API Edge para receber tokens gerados de declarações SAML.

A única diferença entre as chamadas de API documentadas em Como usar a segurança do OAuth2 com a API de gerenciamento da Apigee Edge é que o URL da chamada precisa fazer referência ao nome da zona. Além disso, para gerar o token de acesso inicial com um IDP SAML, é necessário incluir a senha, conforme mostrado na etapa 3 do procedimento acima.

Para autorização, transmita uma credencial de cliente OAuth2 reservada no cabeçalho Authorization. A chamada mostra os tokens de acesso e de atualização na tela.

Receber um token de acesso

(LDAP) Use a seguinte chamada de API para gerar os tokens de acesso inicial e 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 -s \
  -d 'grant_type=password&username=USER_EMAIL&password=USER_PASSWORD'

(SAML) Use a seguinte chamada de API para gerar os tokens de acesso inicial e 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 \
  https://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&response_type=token&passcode=PASSCODE'

A autenticação com um IDP SAML requer uma senha temporária, enquanto um IDP LDAP não.

Atualizar um token de acesso

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 \
  https://EDGE_SSO_IP_DNS:9099/oauth/token \
  -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'