API Users per servizi in bundle legacy

L'API Users consente a un'applicazione di:

  • Rileva se l'utente corrente ha effettuato l'accesso.
  • Reindirizza l'utente alla pagina di accesso appropriata.
  • Richiedi all'utente dell'applicazione di creare un nuovo Account Google, se non ne ha già uno.

Mentre un utente accede all'applicazione, l'applicazione può accedere all'indirizzo email dell'utente. L'app può anche rilevare se l'utente corrente è un amministratore (detto anche "amministratore") per semplificare l'implementazione delle aree solo per l'amministratore.

Autenticazione degli utenti in Java 8

L'esempio di seguito saluta un utente che ha eseguito l'accesso all'app con un messaggio personalizzato e un link per uscire. Se l'utente non ha eseguito l'accesso, l'app fornisce un link alla pagina di accesso per gli Account Google.

Puoi verificare se l'utente ha eseguito l'accesso e ottenere l'indirizzo email dell'utente utilizzando l'API servlet standard, con il metodo getUserPrincipal() dell'oggetto della richiesta. Puoi utilizzare l'API User service per generare gli URL di accesso e disconnessione.


package com.example.appengine.users;

import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "UserAPI",
    description = "UserAPI: Login / Logout with UserService",
    urlPatterns = "/userapi"
)
public class UsersServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    UserService userService = UserServiceFactory.getUserService();

    String thisUrl = req.getRequestURI();

    resp.setContentType("text/html");
    if (req.getUserPrincipal() != null) {
      resp.getWriter()
          .println(
              "<p>Hello, "
                  + req.getUserPrincipal().getName()
                  + "!  You can <a href=\""
                  + userService.createLogoutURL(thisUrl)
                  + "\">sign out</a>.</p>");
    } else {
      resp.getWriter()
          .println(
              "<p>Please <a href=\"" + userService.createLoginURL(thisUrl) + "\">sign in</a>.</p>");
    }
  }
}

L'API User service può restituire le informazioni sull'utente corrente come oggetto Utente. Sebbene gli oggetti utente possano essere archiviati come valore della proprietà nel datastore, ti consigliamo vivamente di evitare di farlo, in quanto includono l'indirizzo email e l'ID univoco dell'utente. Se un utente cambia l'indirizzo email e confronti il vecchio Usermembro memorizzato con il nuovo valore User, quest'ultimo non corrisponderà. Prendi invece in considerazione l'utilizzo del valore ID utenteUser come identificatore univoco stabile dell'utente.

Applicazione dell'accesso e dell'amministratore con web.xml

Se hai pagine a cui l'utente non dovrebbe essere in grado di accedere, a meno che tu non abbia eseguito l'accesso, puoi stabilire un vincolo di sicurezza per tali pagine nel descrittore di deployment (il file web.xml). Se un utente accede a un URL con un vincolo di sicurezza e non ha eseguito l'accesso, App Engine lo reindirizza automaticamente alla pagina di accesso (per gli Account Google o l'autenticazione di Google Workspace), quindi reindirizza l'utente all'URL dopo che ha effettuato l'accesso o la registrazione.

Un vincolo di sicurezza può anche richiedere che l'utente sia un amministratore registrato dell'applicazione; in altre parole, l'utente deve avere il ruolo Visualizzatore, Editor, Proprietario o Amministratore App Engine. In questo modo si semplifica la creazione di sezioni del sito riservate agli amministratori, senza dover implementare un meccanismo di autorizzazione separato.

Per informazioni su come impostare vincoli di sicurezza per gli URL, consulta Descrittore del deployment: sicurezza e autenticazione per web.xml.

Opzioni di autenticazione

La tua app può autenticare gli utenti utilizzando una delle seguenti opzioni:

  • Un account Google
  • Un account sul tuo dominio Google Workspace

Scelta di un'opzione di autenticazione

Dopo aver creato l'app, puoi scegliere l'opzione di autenticazione che vuoi utilizzare. Per impostazione predefinita, la tua app utilizzerà gli Account Google per l'autenticazione. Per scegliere un'altra opzione, ad esempio il dominio Google Workspace, vai alla pagina delle impostazioni del progetto in Google Cloud Console e fai clic su Modifica. Nel menu a discesa Autenticazione Google, seleziona il tipo di autenticazione desiderato, quindi fai clic su Salva.

Accesso e disconnessione

Un'applicazione può rilevare se un utente ha eseguito l'accesso all'app con l'opzione di autenticazione scelta dalla tua app. Se l'utente non ha eseguito l'accesso, l'app può indirizzarlo agli Account Google per accedere o creare un nuovo Account Google. L'app recupera l'URL della pagina di accesso chiamando un metodo dell'API Users. L'app può mostrare questo URL sotto forma di link oppure può inviare un reindirizzamento HTTP all'URL quando l'utente visita una pagina che richiede l'autenticazione.

Se la tua app usa Account Google o Google Workspace per l'autenticazione, il nome dell'applicazione viene visualizzato nella pagina di accesso quando l'utente accede. Il nome visualizzato è il nome dell'applicazione che hai specificato al momento della registrazione dell'applicazione. Puoi cambiare questo nome nel campo Nome applicazione della pagina Credenziali di Google Cloud Console.

Dopo che l'utente ha effettuato l'accesso o creato un Account Google, l'utente viene reindirizzato alla tua applicazione. L'app fornisce l'URL di reindirizzamento al metodo che genera l'URL di accesso.

L'API Users include un metodo per generare un URL per uscire dall'app. L'URL di disconnessione annulla l'autenticazione dell'utente dall'app, quindi rimanda all'URL dell'app senza visualizzare nulla.

L'utente non esegue l'accesso a un'applicazione finché non gli viene chiesto di farlo dall'app e inserisce l'indirizzo email e la password del suo account. Questo vale anche se l'utente ha eseguito l'accesso ad altre applicazioni utilizzando il suo Account Google.

Accesso ai dati dell'account

Mentre l'utente esegue l'accesso a un'app, quest'ultima può accedere all'indirizzo email dell'account per ogni richiesta che l'utente invia all'app. L'app può inoltre accedere a un ID utente che identifica l'utente in modo univoco, anche se l'utente cambia l'indirizzo email per il proprio account.

L'app può anche determinare se l'utente corrente è un amministratore dell'app. Un utente amministratore è un utente che dispone del ruolo Visualizzatore, Editor, Proprietario o Amministratore app Engine. Puoi utilizzare questa funzionalità per sviluppare funzioni amministrative per l'app, anche se non autentichi altri utenti. Le API Go, Java, PHP e Python semplificano la configurazione degli URL come "solo amministratore".

Utenti e Datastore

L'API Users service può restituire le informazioni dell'utente corrente come oggetto Utente. Sebbene gli oggetti utente possano essere archiviati come valore della proprietà nel datastore, ti consigliamo vivamente di evitare di farlo, in quanto includono l'indirizzo email e l'ID univoco dell'utente. Se un utente cambia l'indirizzo email e confronti il vecchio Usermembro memorizzato con il nuovo valore User, quest'ultimo non corrisponderà. Prendi invece in considerazione l'utilizzo del valore ID utente User come identificatore univoco stabile dell'utente.

Account Google e server di sviluppo

Il server di sviluppo simula il sistema di Google Account utilizzando una schermata di accesso falsa. Quando l'applicazione chiama l'API Users per ottenere l'URL della schermata di accesso, l'API restituisce un URL del server di sviluppo speciale che richiede un indirizzo email, ma nessuna password. Puoi digitare qualsiasi indirizzo email in questo messaggio e l'app si comporterà come se avessi eseguito l'accesso con un account utilizzando tale indirizzo.

La schermata di accesso falsa include anche una casella di controllo che indica se l'account fittizio è un amministratore, ovvero se ha il ruolo Visualizzatore, Editor, Proprietario o Amministratore App Engine. Se sele selezioni questa casella, l'app si comporterà come se avessi effettuato l'accesso utilizzando un account amministratore.

Analogamente, l'API Users restituisce un URL di disconnessione che annulla l'accesso falso.