Si un abonnement push utilise l'authentification, le service Pub/Sub signe un jeton Web JSON (JWT) et envoie le jeton JWT dans l'en-tête d'autorisation de la requête push. Le jeton JWT inclut des revendications et une signature.
Les abonnés peuvent valider le jeton JWT et vérifier les points suivants :
- Les revendications sont exactes.
- Le service Pub/Sub a signé les revendications.
Si les abonnés utilisent un pare-feu, ils ne peuvent pas recevoir de requêtes push. Pour recevoir des requêtes push, vous devez désactiver le pare-feu et vérifier le jeton JWT.
Si un abonné dispose d'un pare-feu, vous pouvez recevoir une erreur 403 permission denied.
Avant de commencer
- En savoir plus sur les abonnements.
- Comprendre le fonctionnement des abonnements push
- Créer un abonnement push.
Format JWT
Le jeton JWT est un jeton JWT OpenIDConnect composé d'un en-tête, ensemble de revendications et d'une signature. Le service Pub/Sub encode le jeton JWT en tant que chaîne en base64 avec des délimiteurs de points.
Par exemple, l'en-tête d'autorisation suivant inclut un jeton JWT encodé :
"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"
L'en-tête et l'ensemble de revendications sont des chaînes JSON. Une fois décodés, ils prennent la forme suivante :
{"alg":"RS256","kid":"7d680d8c70d44e947133cbd499ebc1a61c3d5abc","typ":"JWT"} { "aud":"https://example.com", "azp":"113774264463038321964", "email":"gae-gcp@", "sub":"113774264463038321964", "email_verified":true, "exp":1550185935, "iat":1550182335, "iss":"https://accounts.google.com" }
Les jetons associés aux requêtes envoyées aux points de terminaison push peuvent remonter jusqu'à une heure.
Configurer Pub/Sub pour l'authentification push
L'exemple suivant montre comment définir le compte de service d'authentification push sur
un compte de service de votre choix et comment accorder le
iam.serviceAccountTokenCreator rôle à l'
service-{PROJECT_NUMBER}@gcp-sa-pubsub.
agent de service.