API Users per servizi in bundle legacy

ID regione

L'REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l' ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

L'API Users consente a un'applicazione di:

  • Rilevare se l'utente corrente ha eseguito l'accesso.
  • Reindirizzare l'utente alla pagina di accesso appropriata per eseguire l'accesso.
  • Richiedere all'utente dell'applicazione di creare un nuovo Account Google se non ne ha già uno.

Quando un utente accede all'applicazione, l'app può accedere al suo indirizzo email, nonché a un ID utente univoco. L'app può anche rilevare se l'utente corrente è un amministratore (chiamato anche "utente amministratore"), semplificando l'implementazione di aree dell'app riservate agli amministratori.

Autenticazione degli utenti

Il seguente esempio 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 offre un link alla pagina di accesso per gli Account Google.

Puoi verificare se l'utente ha eseguito l'accesso e recuperare il suo indirizzo email utilizzando l'API servlet standard, con il metodo getUserPrincipal() dell'oggetto richiesta. Puoi utilizzare l'API del servizio Utente per generare URL di accesso e di uscita.


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 del servizio Utente può restituire le informazioni dell'utente corrente come oggetto Utente. Sebbene gli oggetti Utente possano essere archiviati come valore di proprietà nel datastore, ti consigliamo vivamente di non farlo perché include l'indirizzo email insieme all'ID utente univoco. Se un utente modifica il suo indirizzo email e confronti il vecchio User memorizzato con il nuovo valore User, non corrisponderanno. Ti consigliamo invece di utilizzare il valore dell'ID utente User come identificatore univoco stabile.

Applicare l'accesso e l'accesso amministrativo con web.xml

Se hai pagine a cui l'utente non deve poter accedere a meno che non abbia eseguito l'accesso, puoi stabilire un vincolo di sicurezza per queste pagine nel descrittore di deployment (il web.xml file). 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 l'autenticazione di Account Google o Google Workspace), quindi lo reindirizza all'URL dopo l'accesso o la registrazione.

Un vincolo di sicurezza può anche richiedere che l'utente sia un amministratore registrato per l'applicazione, ovvero che l'utente abbia il ruolo Visualizzatore, Editor, Proprietario o Amministratore App Engine ruolo. In questo modo è facile creare sezioni del sito riservate agli amministratori, senza dover implementare un meccanismo di autorizzazione separato.

Per scoprire come impostare i vincoli di sicurezza per gli URL, consulta Il descrittore di deployment: sicurezza e autenticazione per web.xml.

Opzioni di autenticazione

La tua app può autenticare gli utenti utilizzando una di queste opzioni:

  • Un account Google
  • Un account nel tuo dominio Google Workspace

Scegliere un'opzione di autenticazione

Dopo aver creato l'app, puoi scegliere l'opzione di autenticazione che vuoi utilizzare. Per impostazione predefinita, l'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 tuo progetto nella Google Cloud console e fai clic su Modifica. Nel menu a discesa Autenticazione Google, seleziona il tipo di autenticazione desiderato e fai clic su Salva.

Accedere e uscire dall'account

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

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

Una volta che l'utente ha eseguito l'accesso o creato un Account Google, 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 uscita annulla l'autenticazione dell'utente dall'app, quindi lo reindirizza all'URL dell'app senza visualizzare nulla.

Un utente non ha eseguito l'accesso a un'applicazione finché non viene richiesto dall'app e non 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 proprio Account Google.

Accedere ai dati dell'account

Quando un utente ha eseguito l'accesso a un'app, l'app può accedere all'indirizzo email dell'account per ogni richiesta che l'utente effettua all'app. L'app può anche accedere a un ID utente che identifica l'utente in modo univoco, anche se l'utente modifica l'indirizzo email del suo account.

L'app può anche determinare se l'utente corrente è un amministratore per l' app. Un utente amministratore è qualsiasi utente con il ruolo Visualizzatore, Editor, Proprietario o Amministratore App Engine role. Puoi utilizzare questa funzionalità per creare funzionalità 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 del servizio utenti può restituire le informazioni dell'utente corrente come oggetto Utente. Sebbene gli oggetti Utente possano essere archiviati come valore di proprietà nel datastore, ti consigliamo vivamente di non farlo perché include l'indirizzo email insieme all'ID utente univoco. Se un utente modifica il suo indirizzo email e confronti il vecchio User memorizzato con il nuovo User valore, non corrisponderanno. Ti consigliamo invece di utilizzare il User valore dell'ID utente come identificatore univoco stabile dell'utente.

Account Google e server di sviluppo

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

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

Allo stesso modo, l'API Users restituisce un URL di uscita che annulla l'accesso fittizio.