API Users pour les anciens services groupés

L'API Users permet à une application de :

  • détecter si l'utilisateur actuel est connecté ;
  • rediriger l'utilisateur vers la page de connexion appropriée ;
  • demander à l'utilisateur de l'application de créer un compte Google s'il n'en a pas déjà un.

Lorsqu'un utilisateur est connecté à l'application, celle-ci peut accéder à son adresse e-mail. L'application peut également détecter si l'utilisateur actuel est un administrateur (également appelé "utilisateur administrateur"), ce qui facilite la mise en œuvre des zones réservées aux administrateurs. Pour afficher le contenu du package user, consultez la documentation de référence sur le package user.

Authentification des utilisateurs dans l'environnement Go 1.11

L'exemple suivant permet de saluer un utilisateur connecté à l'application en affichant un message personnalisé et un lien de déconnexion. Si l'utilisateur n'est pas connecté, l'application propose un lien vers la page de connexion pour les comptes Google.

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcome(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-type", "text/html; charset=utf-8")
	ctx := appengine.NewContext(r)
	u := user.Current(ctx)
	if u == nil {
		url, _ := user.LoginURL(ctx, "/")
		fmt.Fprintf(w, `<a href="%s">Sign in or register</a>`, url)
		return
	}
	url, _ := user.LogoutURL(ctx, "/")
	fmt.Fprintf(w, `Welcome, %s! (<a href="%s">sign out</a>)`, u, url)
}

Exiger une connexion et un accès administrateur avec app.yaml

Si vous souhaitez qu'un utilisateur soit connecté pour accéder à certaines pages, vous pouvez définir cette exigence dans le fichier app.yaml.

La configuration du gestionnaire peut également exiger que l'utilisateur soit un administrateur enregistré pour l'application. Cela signifie que l'utilisateur doit disposer du rôle "Lecteur", "Éditeur", "Propriétaire" ou "Administrateur App Engine". Cela facilite la création sur le site de sections réservées à l'administrateur, sans qu'il soit nécessaire de mettre en œuvre un mécanisme d'autorisation distinct.

Pour apprendre à configurer l'authentification pour des URL, consultez la documentation de référence sur le fichier app.yaml et reportez-vous à la méthode permettant d'exiger une connexion ou des droits d'administrateur.

OAuth dans l'environnement Go

Outre les modes d'authentification standards, les utilisateurs peuvent être identifiés dans votre application via OAuth. Ce protocole permet à un utilisateur d'accorder à un tiers une autorisation limitée d'accéder à une application Web en son nom, sans avoir à partager ses identifiants (nom d'utilisateur et mot de passe). Pour en savoir plus sur l'API OAuth, y compris sur les interactions requises par les clients, consultez la documentation OAuth.

Sachez que l'identification de vos utilisateurs à l'aide d'OAuth est complètement indépendante des modes d'authentification standards. Par exemple, les pages indiquant login: required ou login: admin refuseront de se charger si l'utilisateur n'est authentifié que via OAuth.

Voici un exemple simple d'accès aux informations utilisateur OAuth dans un gestionnaire de requêtes Go :

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcomeOAuth(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	u, err := user.CurrentOAuth(ctx, "")
	if err != nil {
		http.Error(w, "OAuth Authorization header required", http.StatusUnauthorized)
		return
	}
	if !u.Admin {
		http.Error(w, "Admin login only", http.StatusUnauthorized)
		return
	}
	fmt.Fprintf(w, `Welcome, admin user %s!`, u)
}

Options d'authentification

Votre application peut authentifier les utilisateurs à l'aide de l'une des options suivantes :

  • Un compte Google
  • Un compte sur votre domaine Google Workspace

Choisir une option d'authentification

Une fois votre application créée, vous pouvez choisir l'option d'authentification que vous souhaitez utiliser. Par défaut, votre application utilise des comptes Google. Pour sélectionner une autre option, telle qu'un domaine Google Workspace, accédez à la page Paramètres du projet dans Google Cloud Console, puis cliquez sur Modifier. Dans le menu déroulant Authentification Google, sélectionnez le type d'authentification souhaité, puis cliquez sur Enregistrer.

Se connecter et se déconnecter

Une application peut détecter si un utilisateur s'est connecté avec l'option d'authentification choisie pour votre application. Si l'utilisateur n'est pas connecté, l'application peut le rediriger vers la page des comptes Google pour qu'il se connecte ou crée un compte. L'application obtient l'URL de la page de connexion en appelant une méthode de l'API Users. L'application peut afficher cette URL en tant que lien, ou émettre une redirection HTTP vers l'URL lorsque l'utilisateur visite une page qui nécessite une authentification.

Si votre application utilise des comptes Google ou Google Workspace pour l'authentification, son nom apparaît sur la page de connexion lorsque l'utilisateur s'y connecte. Le nom affiché est le nom d'application que vous avez spécifié lors de son enregistrement. Vous pouvez modifier ce nom dans le champ Nom de l'application de la page Identifiants de Google Cloud Console.

Une fois que l'utilisateur s'est connecté ou a créé un compte Google, il est redirigé vers votre application. L'application fournit l'URL de redirection à la méthode ayant généré l'URL de connexion.

L'API Users inclut une méthode de génération d'URL pour la déconnexion de l'application. L'URL de déconnexion désauthentifie l'utilisateur auprès de l'application, puis le renvoie vers l'URL de l'application, sans que rien ne s'affiche.

Un utilisateur n'est pas connecté à une application avant d'y être invité par celle-ci, et d'avoir saisi l'adresse e-mail et le mot de passe de son compte. Cela s'applique même si l'utilisateur s'est connecté à d'autres applications à partir de son compte Google.

Accéder aux informations de compte

Lorsqu'un utilisateur est connecté à une application, celle-ci peut accéder à l'adresse e-mail du compte pour chaque requête envoyée par l'utilisateur. L'application peut également accéder à un ID utilisateur qui authentifie celui-ci de manière unique, même s'il modifie l'adresse e-mail de son compte.

En outre, l'application peut déterminer si l'utilisateur actuel en est un administrateur. Un administrateur est un utilisateur disposant du rôle "Lecteur", "Éditeur", "Propriétaire" ou "Administrateur App Engine". Vous pouvez utiliser cette option pour développer des fonctionnalités administratives pour l'application, même sans authentifier d'autres utilisateurs. Les API Go, Java, PHP et Python facilitent la configuration des URL réservées aux administrateurs.

Comptes Google et serveur de développement

Le serveur de développement simule le système de comptes Google en utilisant une page de connexion factice. Lorsque votre application appelle l'API Users pour obtenir l'URL de la page de connexion, l'API renvoie une URL spéciale du serveur de développement qui invite l'utilisateur à saisir une adresse e-mail, mais pas de mot de passe. Vous pouvez saisir n'importe quelle adresse e-mail. L'application agira comme si vous étiez connecté avec un compte doté de cette adresse.

La fausse page de connexion inclut également une case à cocher qui indique s'il s'agit d'un faux compte administrateur, c'est-à-dire si le compte dispose du rôle "Lecteur", "Éditeur", "Propriétaire" ou "Administrateur App Engine". Si vous cochez cette case, l'application agit comme si vous étiez connecté à partir d'un compte administrateur.

De la même manière, l'API Users renvoie une URL de déconnexion qui annule la connexion factice.