Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
Versão: 1.3.1
Autentique com o Google para acessar as APIs do Google especificadas.
Use essa extensão para receber um token (OAuth ou JWT) para serviços do Google Cloud e, em seguida, use o token para chamadas subsequentes à API do Google, como usando uma política ServiceCallout.
Por exemplo, em um proxy de API, você pode receber um token com essa extensão, armazenar em cache usando a política PopulateCache e transmitir o token pela política ServiceCallout para acessar os serviços do Google Cloud em um fluxo de proxy de API.
Pré-requisitos
Este conteúdo fornece uma referência para configurar e usar essa extensão. Antes de usar a extensão de um proxy de API com a política ExtensionCallout, você precisa:
Verifique se a conta que a extensão vai usar (a conta representada pela conta de serviço que você usará para credenciais) tem acesso aos serviços do Google Cloud com que a extensão vai se autenticar.
Use o console do Google Cloud para gerar uma chave para a conta de serviço.
Use o conteúdo do arquivo JSON da chave da conta de serviço resultante ao adicionar e configurar a extensão usando a referência de configuração.
Sobre a autenticação com o Google Cloud
Essa extensão solicita autenticação do Google Cloud representando um membro específico definido no seu projeto do Google Cloud. Use o arquivo JSON da conta de serviço desse membro do projeto ao configurar a extensão.
Como resultado, essa extensão terá acesso apenas aos recursos para os quais esse membro tem permissão. Em outras palavras, a autenticação bem-sucedida por essa extensão depende de uma correspondência entre as permissões concedidas no console do Google Cloud e o acesso solicitado pela extensão (por escopos ou público-alvo) durante a execução.
Em geral, as etapas para autenticar o acesso às APIs dessa extensão são as seguintes:
Verifique se a conta de serviço do membro que essa extensão representa tem acesso ao recurso do Google que você quer acessar. Use a página do Cloud Identity and Access Management (Cloud IAM) no console do Google Cloud para conceder papéis ao membro do projeto que essa extensão representa.
Use o JSON da chave da conta de serviço desse membro ao configurar a extensão.
Ao configurar uma política ExtensionCallout para usar essa extensão, solicite a autenticação apenas para recursos a que o membro do projeto tem acesso.
Amostras
Os exemplos a seguir ilustram como fazer a autenticação no Google Cloud usando a política ExtensionCallout.
Receber um token de acesso
No exemplo a seguir, a ação getOauth2AccessToken da extensão recupera um token para uso em solicitações à API Cloud Translation.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-Access-Token">
<DisplayName>Get Access Token</DisplayName>
<Connector>google-auth</Connector>
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-translation"
]
}]]></Input>
<Output>google.credentials</Output>
</ConnectorCallout>
O valor da resposta é parecido com isto:
{
"access_token":"ya29.c.ElpSB...BMgkALBJ0kou-8",
"token_type":"Bearer",
"expiresInSec": 3600
}
A política AssignMessage a seguir recupera o valor da resposta da política ExtensionCallout acima e o copia no payload da resposta. Isso pode ser útil para depuração. Na prática, talvez você não queira retornar o token ao cliente.
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fal>se&qu<ot; enabled>="true" n<ame="Re>triev<e-Auth-Token"
DisplayNameRetrieve >Auth <Tok>en/Displa<yName
AssignTo type="response>" createNew="false"<;/
S>et
< > < Payload conte>ntType="application/json"{google.credentials.access_token}/Payload
/Set
/AssignMessage
Armazenar um token de acesso em cache
Para evitar fazer chamadas desnecessárias para recuperar um token, considere armazenar em cache o token recebido. Para chamadas subsequentes que exigem um token, recuperar o token do cache do Apigee Edge é mais rápido do que receber um novo. Quando o token em cache expirar, recupere um novo e atualize o cache com ele.
O código a seguir de um exemplo de proxy de API ilustra como definir e usar um token em cache para chamar a API Google Translation com uma política ServiceCallout. Cada exemplo de código aqui é para uma política diferente no fluxo.
As políticas a seguir são executadas na sequência descrita pelo XML de fluxo abaixo:
<Request>
<!-- Attempt to get a token from the cache. -->
<Step>
<Name>Get-Cached-Auth-Token</Name>
</Step>
<!-- Only execute the following ExtensionCallout policy if the call to the
cache couldn't retrieve a cached token>. --
< >Step
< >NameGoogle-Auth-Cal<lout/>Name
< Conditionlookupcache.Get-Cached-Auth-Token.cachehit is f<alse/Condi>tion
< />Step
< !-- Only execute the following PopulateCache policy if the call to the
cache couldn't retrieve a cached t>oken.< --
> Step
< > NameCache-Au<th-To>ken/Name
< C>onditionlookupcache.Get-Cached-Auth-Token.cachehit <is false/C>ondit<ion
> /S<tep
!-- Use the ServiceCallout policy to call the translate> API.< --
> Step
< > NameTransl<ate-T>ext/N<ame
> < /Step
/Request
A política LookupCache a seguir tenta receber um token do cache. Se o token já tiver sido obtido e armazenado em cache, essa política o receberá para uso pelo proxy de API.
<?xml version="1.0" encoding="UTF-8&quo>t; <standalone="yes"? LookupCache async="false" continueOnError="false>" <enabled=&qu>ot;true" name=&q<uot;Get-Cach>ed-Auth<-Token" DisplayNameGet Cached Auth Token/DisplayName !-- >Give ca<che key >and scope t<o speci>fy the entr<y for the c>ached token. -- < CacheKey > < >Prefix/ < <>/span>KeyFragmen<tgcp_t>ranslat<e_token_/KeyFragment /CacheKey ScopeExclusive/Scope !-- Assign the retrieved token (i>f any) <to a var>iable, where it can b<e retriev>ed <by policies.>-- AssignTocloud.translation.auth.token/AssignTo /LookupCacheSe a pesquisa de cache não recuperar um token armazenado em cache, a política ExtensionCallout a seguir vai recuperar um novo token do OAuth, especificando a API Cloud Translation do Google como o escopo do token. O Google Cloud retorna um token válido se as credenciais da conta de serviço usadas ao configurar a extensão
Google-Auth-Calloutrepresentarem um membro do projeto com acesso à API.<?xml version="1.0" encoding="UTF-8&quo>t; <standalone="yes"? ConnectorCallout async="false" continueOnError="tr>ue"<; enabled=&>quot;true" nam<e="Goog>le-Auth<-Callout&>quot; DisplayNam<eGoogle-Au>th-Call<out/Di>splayName Conn<ectorex>ample-a<uth-e><xtension/Connector ActiongetOauth2AccessToken/Action Input![CDATA[{ &qu><ot;sco>pe"<; : ["https://ww>w.googleapis.com/auth/cloud-<transla>tio<n"] }]>]/Input Output parsed="false"cloud.translation.auth.token/Output /ConnectorCalloutDepois que a política ExtensionCallout recupera um novo token, a política PopulateCache o armazena em cache para uso posterior por políticas no proxy de API.
<?xml version="1.0" encoding="UTF-8&quo>t; <standalone="yes"? PopulateCache async="false" continueOnError=">false&q<uot; enable>d="true&quo<t; name=&quo>t;Cache<-Auth-Token>" < DisplayNameCache Auth Token/DisplayName Properties/ !->- Set c<ache key> informatio<n to sp>ecify a uni<que key for> this entry. -- < CacheKey > < >Prefix/ < <>/span>KeyFragmen<tgcp_t>ranslat<e_token_/KeyFr>agment < /Ca>cheKey < S>copeExclusive/<Scope Exp>irySett<ings TimeoutInSec5/TimeoutInSec /ExpirySettings !-- Get the >token t<o cach>e from the variable where th<e Exten>sio<nCallout put i>t. -- Sourcecloud.translation.auth.token/Source /PopulateCache
Ações
getOauth2AccessToken
Recebe um token de acesso do OAuth 2.0. Use essa ação para oferecer suporte ao OAuth de duas etapas entre o proxy de API e as APIs do Google quando elas exigem um token OAuth.
No OAuth de duas etapas, essa ação de extensão recupera um token OAuth autenticando com o Google usando um JSON de conta de serviço (você adiciona esse JSON ao configurar a extensão). Depois que essa ação recuperar o token OAuth, o proxy de API poderá usá-lo para fazer chamadas às APIs do Google, chamando as APIs em nome da conta de serviço do Google.
O acesso às APIs do Google Cloud é filtrado pelos escopos listados em Escopos do OAuth 2.0 para APIs do Google.
Para mais informações sobre interações de servidor para servidor com o OAuth 2.0, consulte Usar o OAuth 2.0 para aplicativos de servidor para servidor.
Sintaxe
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"scope1",
>< &q>uot;scope2"
]
}]]/Input
Exemplo
No exemplo a seguir, a ação getOauth2AccessToken da extensão recupera um token para uso em solicitações à API Cloud Translation.
<Action>getOauth2AccessToken</Action>
<Input><![CDATA[{
"scope" : [
"https://www.googleapis.com/auth/cloud-trans><lation>"
]
}]]/Input
Parâmetros de solicitação
| Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
|---|---|---|---|---|
| escopo | Uma matriz de escopos do OAuth 2.0. Para saber mais sobre escopos, consulte Escopos do OAuth 2.0 para APIs do Google. | Matriz | ["https://www.googleapis.com/auth/cloud-platform"], que concede acesso a todas as APIs que a conta de serviço pode acessar. |
Não. |
Resposta
Um objeto que contém o token de acesso, o tipo e a data de validade no seguinte formato:
{
"accessToken": "ewogICJ0eXB...C5jb20iCn0K",
"token_type": "Bearer",
"expiresInSec": 3600
}
Propriedades da resposta
| Parâmetro | Descrição | Padrão | Obrigatório |
|---|---|---|---|
| accessToken | Token de acesso do OAuth 2.0. | Nenhum | Sim |
| tokenType | Tipo de token. | Bearer | Sim |
| expiresInSec | Número de segundos até a expiração do token. | 3600 | Sim |
getJWTAccessToken
Recebe um token de acesso JSON Web Token (JWT). Você pode usar esse token para autenticar com as APIs do Google se a API que você quer chamar tiver uma definição de serviço publicada no repositório do GitHub das APIs do Google.
Com algumas APIs do Google, é possível fazer chamadas de API autorizadas usando um JWT assinado diretamente como um token de portador, em vez de um token de acesso OAuth 2.0. Quando isso é possível, você evita ter que fazer uma solicitação de rede ao servidor de autorização do Google antes de fazer uma chamada de API.
Para mais informações sobre a autenticação com um token de acesso JWT, consulte Usar o OAuth 2.0 para aplicativos de servidor para servidor.
Sintaxe
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : &quo><t;audi>ence"
}]]/Input
Exemplo: URL da função do Cloud
No exemplo a seguir, a ação getOauth2AccessToken da extensão recupera um token para uso em solicitações à API Cloud Translation.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUN><CTION_>NAME"
}]]/Input
Exemplo: ID do cliente protegido pelo Cloud IAP
No exemplo a seguir, a ação getOauth2AccessToken da extensão recupera um token para uso em solicitações à API Cloud Translation.
<Action>getJWTAccessToken</Action>
<Input><![CDATA[{
"audience" : "Cloud-IAP-secured><-clien>t-ID"
}]]/Input
Parâmetros de solicitação
| Parâmetro | Descrição | Padrão | Obrigatório |
|---|---|---|---|
| audience [público-alvo] | Destinatário pretendido do token. Isso pode incluir um ID do cliente protegido pelo Cloud IAP, um URL do Cloud Functions e assim por diante. | Nenhum | Sim |
Resposta
{
"accessToken": "token",
"tokenType": "Bearer",
"expiresInSec": 3600
}
Propriedades da resposta
| Parâmetro | Descrição | Padrão | Obrigatório |
|---|---|---|---|
| accessToken | Token de acesso. | Nenhum | Sim |
| tokenType | Tipo de token. | Bearer | Sim |
| expiresInSec | Validade em segundos. | 3600 | Sim |
Referência de configuração
Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console do Apigee, consulte Adicionar e configurar uma extensão.
Propriedades comuns de extensão
As propriedades a seguir estão presentes para cada extensão.
| Propriedade | Descrição | Padrão | Obrigatório |
|---|---|---|---|
name |
Nome que será dado a esta configuração da extensão. | Nenhum | Sim |
packageName |
Nome do pacote de extensão fornecido pelo Apigee Edge. | Nenhum | Sim |
version |
Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. | Nenhum | Sim |
configuration |
Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. | Nenhum | Sim |
Propriedades deste pacote de extensão
Especifique valores para as seguintes propriedades de configuração específicas dessa extensão.
| Propriedade | Descrição | Padrão | Obrigatório |
|---|---|---|---|
| credenciais | Quando inserido no console do Apigee Edge, esse é todo o conteúdo do arquivo JSON da chave da conta de serviço. Quando enviado pela API Management, é um valor codificado em base64 gerado de todo o arquivo JSON da chave da conta de serviço. | Nenhum | Sim |