Se uma subscrição push usar autenticação, o serviço Pub/Sub assina um símbolo da Web JSON (JWT) e envia o JWT no cabeçalho de autorização do pedido push. O JWT inclui reivindicações e uma assinatura.
Os subscritores podem validar o JWT e verificar o seguinte:
- As reivindicações estão corretas.
- O serviço Pub/Sub assinou as reivindicações.
Se os subscritores usarem uma firewall, não podem receber pedidos push. Para receber pedidos push, tem de desativar a firewall e validar o JWT.
Se um subscritor tiver uma firewall, pode receber um erro 403 permission denied.
Antes de começar
- Saiba mais acerca das subscrições.
- Compreenda como funcionam as subscrições push.
- Crie uma subscrição push.
Formato JWT
O JWT é um JWT do OpenIDConnect que consiste num cabeçalho, num conjunto de reivindicações e numa assinatura. O serviço Pub/Sub codifica o JWT como uma string base64 com delimitadores de pontos.
Por exemplo, o seguinte cabeçalho de autorização inclui um JWT codificado:
"Authorization" : "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjdkNjgwZDhjNzBkNDRlOTQ3MTMzY2JkNDk5ZWJjMWE2MWMzZDVh YmMiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJodHRwczovL2V4YW1wbGUuY29tIiwiYXpwIjoiMTEzNzc0M jY0NDYzMDM4MzIxOTY0IiwiZW1haWwiOiJnYWUtZ2NwQGFwcHNwb3QuZ3NlcnZpY2VhY2NvdW50LmNvb SIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJleHAiOjE1NTAxODU5MzUsImlhdCI6MTU1MDE4MjMzNSwia XNzIjoiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTEzNzc0MjY0NDYzMDM4MzIxO TY0In0.QVjyqpmadTyDZmlX2u3jWd1kJ68YkdwsRZDo-QxSPbxjug4ucLBwAs2QePrcgZ6hhkvdc4UHY 4YF3fz9g7XHULNVIzX5xh02qXEH8dK6PgGndIWcZQzjSYfgO-q-R2oo2hNM5HBBsQN4ARtGK_acG-NGG WM3CQfahbEjZPAJe_B8M7HfIu_G5jOLZCw2EUcGo8BvEwGcLWB2WqEgRM0-xt5-UPzoa3-FpSPG7DHk7 z9zRUeq6eB__ldb-2o4RciJmjVwHgnYqn3VvlX9oVKEgXpNFhKuYA-mWh5o7BCwhujSMmFoBOh6mbIXF cyf5UiVqKjpqEbqPGo_AvKvIQ9VTQ"
O cabeçalho e o conjunto de afirmações são strings JSON. Depois de descodificadas, assumem a seguinte forma:
{"alg":"RS256","kid":"7d680d8c70d44e947133cbd499ebc1a61c3d5abc","typ":"JWT"} { "aud":"https://example.com", "azp":"113774264463038321964", "email":"gae-gcp@appspot.gserviceaccount.com", "sub":"113774264463038321964", "email_verified":true, "exp":1550185935, "iat":1550182335, "iss":"https://accounts.google.com" }
Os tokens anexados a pedidos enviados para pontos finais de envio podem ter até uma hora.
Configure o Pub/Sub para a autenticação push
O exemplo seguinte mostra como definir a conta de serviço de autorização push para uma conta de serviço à sua escolha e como conceder a função iam.serviceAccountTokenCreator ao service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
agente do serviço.
Consola
Aceda à página Subscrições do Pub/Sub.
Clique em Criar subscrição.
No campo ID da subscrição, introduza um nome.
Selecione um tópico.
Selecione Push como o Tipo de fornecimento.
Introduza um URL de ponto final.
Selecione Ativar autenticação.
Selecione uma conta de serviço.
Certifique-se de que o agente de serviço
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.comtem a funçãoiam.serviceAccountTokenCreatorno painel de controlo do IAM do seu projeto. Se a conta de serviço não tiver recebido a função, clique em Conceder no painel de controlo do IAM para o fazer.Opcional: introduza um público-alvo.
Clique em Criar.
gcloud
# Configure the push subscription gcloud pubsub subscriptions (create|update|modify-push-config) ${SUBSCRIPTION} \ --topic=${TOPIC} \ --push-endpoint=${PUSH_ENDPOINT_URI} \ --push-auth-service-account=${SERVICE_ACCOUNT_EMAIL} \ --push-auth-token-audience=