Compreender os pontos finais do OAuth

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Para fazer o seu trabalho como servidor de autorizações OAuth2, o Apigee tem de expor pontos finais onde os clientes podem pedir tokens e códigos de autorização. Este tópico oferece uma introdução rápida a estes pontos finais e mostra como configurá-los no Apigee.

O que é um ponto final do OAuth2?

Um ponto final OAuth2 é um URL que os clientes chamam para pedir tokens OAuth (ou códigos de autorização). Segue-se um exemplo de um pedido de um token de acesso:

$ curl -i -H "ContentType: x-www-form-urlencoded" \
-X POST "https://apitest.acme.com/oauth/client_credential/accesstoken" \
-d "grant_type=client_credentials" \
-H "Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ"

Precisa de uma política OAuthV2 para processar este pedido. Como pode inferir do pedido de exemplo acima, a política tem de suportar o tipo de concessão "credenciais do cliente" e ser executada no caminho /oauth/client_credentials/accesstoken.

Esta é uma política OAuthV2 de exemplo configurada para aceitar o tipo de autorização client_credentials. Para informações sobre elementos de configuração opcionais que pode configurar com esta política, consulte a política OAuthV2.

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <SupportedGrantTypes>
      <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Segue-se um exemplo da configuração do ponto final para gerar um token de acesso. Executa a política GenerateAccessToken, que tem de ser configurada para suportar o tipo de concessão client_credentials.

...
       <Flow name="generate-access-token">
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

Se o cliente fornecer as credenciais corretas, a política gera e devolve um token; caso contrário, devolve um erro.

Tópicos relacionados

Para obter informações detalhadas sobre todos os tipos de concessão suportados e código de exemplo, consulte o artigo Obtenha tokens OAuth 2.0