Choisir une méthode d'authentification

Cloud Endpoints accepte plusieurs méthodes d'authentification, adaptées à une multitude d'applications et de cas d'utilisation. Le proxy Extensible Service Proxy (ESP) exploite la méthode d'authentification que vous avez spécifiée dans la configuration du service pour valider les requêtes entrantes, avant de les transmettre au backend de l'API. Ce document offre un aperçu de chaque méthode d'authentification disponible et en fournit des exemples de cas d'utilisation.

Clés API

Une clé API est une simple chaîne chiffrée qui identifie un projet Google Cloud à des fins de gestion des quotas, de facturation et de surveillance. Les développeurs génèrent une clé API dans un projet de la console Google Cloud, qu'ils intègrent à chaque appel de l'API en tant que paramètre de requête.

Si vous spécifiez une exigence de clé API dans la configuration de service, ESP utilise la clé API pour rechercher le projet Google Cloud auquel elle est associée. ESP n'accepte que les requêtes comportant une clé API générée dans votre projet Google Cloud ou dans l'un des autres projets Google Cloud au sein desquels votre API a été activée. Pour plus d'informations, consultez la page Restreindre l'accès à une API à l'aide de clés API.

Contrairement aux identifiants basés sur des jetons à court terme ou sur des requêtes signées, les clés API font partie intégrante de la requête. Elles sont donc considérées comme moins sécurisées, car vulnérables aux attaques dites de "l'homme du milieu". Vous pouvez utiliser des clés API en complément de l'une des méthodes d'authentification décrites ci-dessous. Pour des raisons de sécurité, n'utilisez pas les clés API seules lorsque les appels d'API contiennent des données utilisateur.

Cas d'utilisation

Si vous souhaitez utiliser des fonctionnalités Endpoints, telles que les quotas, chaque requête doit transmettre une clé API permettant à Endpoints d'identifier le projet Google Cloud auquel l'application cliente est associée.

Pour plus d'informations sur les clés API, consultez la page Quand et pourquoi utiliser les clés API.

Firebase Authentication

Firebase Authentication fournit des services de backend, des SDK et des bibliothèques pour authentifier les utilisateurs auprès d'une application mobile ou Web. Cette fonctionnalité permet d'authentifier les utilisateurs à l'aide de divers identifiants, tels que les ID Google, Facebook, Twitter ou GitHub.

Une fois que l'utilisateur a réussi à se connecter, la bibliothèque cliente Firebase signe un jeton Web JSON (JWT) associé à une clé privée. ESP vérifie que le jeton JWT a été signé par Firebase, et que la revendication iss (émetteur) de ce jeton JWT, qui identifie l'application Firebase, correspond au paramètre issuer spécifié dans la configuration du service.

Cas d'utilisation

Nous vous recommandons d'utiliser Firebase lorsque les appels d'API impliquent des données utilisateur et que l'API doit être utilisée dans des flux pour lesquels l'utilisateur dispose d'une interface utilisateur (par exemple, à partir d'applications mobiles ou Web). Pour plus d'informations, consultez l'onglet Firebase de la page Authentifier les utilisateurs.

Auth0

Auth0 authentifie et autorise les applications et les API indépendamment du fournisseur d'identité, de la plate-forme, de la pile et de l'appareil.

Auth0 prend en charge un grand nombre de fournisseurs et respecte la spécification Security Assertion Markup Language (SAML). Il fournit des services de backend, des SDK et des bibliothèques d'interface utilisateur pour l'authentification des utilisateurs dans les applications Web et mobiles. Auth0 s'intègre à plusieurs fournisseurs d'identité tiers et permet également une gestion personnalisée des comptes utilisateur.

La bibliothèque cliente fournie par Auth0 génère et signe un jeton JWT une fois l'utilisateur connecté. ESP vérifie que le jeton JWT a été signé par Auth0 et que la revendication iss (émetteur) de ce jeton JWT, qui identifie l'application Auth0, correspond au paramètre issuer spécifié dans la configuration du service.

Cas d'utilisation

Auth0 convient aux applications Web et mobiles grand public ou d'entreprise. Pour plus d'informations, consultez l'onglet Auth0. Pour plus d'informations, consultez la section Authentifier les utilisateurs.

Authentification par jeton d'ID Google

L'authentification à l'aide d'un jeton d'ID Google permet aux utilisateurs de s'authentifier en se connectant à un compte Google. Une fois authentifié, l'utilisateur a accès à tous les services Google. Vous pouvez utiliser des jetons d'ID Google pour appeler des API Google et des API gérées par Endpoints. ESP valide le jeton d'ID Google à l'aide de la clé publique et garantit que la revendication iss dans le jeton JWT correspond à https://accounts.google.com.

Cas d'utilisation

L'authentification à l'aide d'un jeton d'ID Google est recommandée lorsque tous les utilisateurs possèdent un compte Google. Par exemple, vous pouvez opter pour l'authentification par jeton d'ID Google si l'API est associée à une application Google (par exemple, dans le cas d'une application associée à Google Drive). L'authentification par jeton d'ID Google permet aux utilisateurs de s'authentifier en se connectant à un compte Google. Une fois authentifié, l'utilisateur a accès à tous les services Google. Pour plus d'informations, consultez l'onglet "Jeton d'ID Google" de la page Authentifier les utilisateurs.

Comptes de service

Pour identifier un service qui envoie des requêtes à l'API, vous utilisez un compte de service. Le service appelant utilise la clé privée du compte de service pour signer un jeton Web JSON (JWT) sécurisé et envoie le jeton JWT signé dans la requête à l'API.

Cas d'utilisation

Les jetons JWT et les comptes de service sont parfaitement adaptés aux microservices. Pour plus d'informations, consultez la page S'authentifier entre différents services.

Authentification personnalisée

Vous pouvez utiliser d'autres plates-formes d'authentification pour authentifier les utilisateurs, à condition que la méthode utilisée soit conforme à la RFC 7519 qui définit le jeton Web JSON.

Pour en savoir plus, consultez l'onglet "Personnalisé" de la page Authentifier des utilisateurs.