API Users per servizi in bundle legacy

L'API Users consente a un'applicazione di:

  • Rileva se l'utente corrente ha eseguito l'accesso.
  • Reindirizza l'utente alla pagina di accesso appropriata per eseguire l'accesso.
  • Chiedi all'utente della tua 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. 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 utente in Java 8

L'esempio seguente 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 ottenere il suo indirizzo email utilizzando l'API servlet standard, con il metodo getUserPrincipal() dell'oggetto richiesta. Puoi utilizzare l'API User Service per generare URL di accesso e di logout.


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 User. Sebbene gli oggetti User possano essere archiviati come valore di proprietà nel data store, ti consigliamo vivamente di evitare di farlo perché include l'indirizzo email insieme all'ID univoco dell'utente. Se un utente cambia il proprio indirizzo email e confronti il vecchio User memorizzato con il nuovo valore User , i valori non corrisponderanno. Valuta invece la possibilità di utilizzare il User valore dell'ID utente come identificatore univoco stabile dell'utente.

Applicazione dell'accesso con nome utente e password e dell'accesso amministrativo con web.xml

Se ci sono pagine a cui l'utente non deve poter accedere senza aver eseguito l'accesso, puoi stabilire un vincolo di sicurezza per queste pagine nel descrittore di deployment (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 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 abbia il ruolo di visualizzatore, editor, proprietario o amministratore App Engine. In questo modo è facile creare sezioni del sito riservate agli amministratori, senza dover implementare un meccanismo di autorizzazione separato.

Per scoprire come impostare vincoli di sicurezza per gli URL, consulta Descrittore di 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 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, 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 tuo progetto nella console Google Cloud e fai clic su Modifica. Nel menu a discesa Autenticazione Google, seleziona il tipo di autenticazione desiderato e poi fai clic su Salva.

Accedere e uscire

Un'applicazione può rilevare se un utente ha eseguito l'accesso con l'opzione di autenticazione scelta per l'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 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 alla tua applicazione. Il nome visualizzato è il nome dell'applicazione specificato durante la registrazione dell'applicazione. Puoi modificare questo nome nel campo Nome dell'applicazione della pagina Credenziali della console Google Cloud.

Dopo aver eseguito l'accesso o creato un Account Google, l'utente viene reindirizzato nuovamente 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 scollega l'utente dall'app, quindi reindirizza all'URL dell'app senza visualizzare nulla.

Un utente non accede a un'applicazione finché non gli viene richiesto dall'app di inserire 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.

Accesso ai dati dell'account

Quando un utente accede a un'app, l'app può accedere all'indirizzo email dell'account per ogni richiesta effettuata dall'utente. L'app può anche accedere a un ID utente che identifica l'utente in modo univoco, anche se l'utente cambia l'indirizzo email del proprio account.

L'app può anche determinare se l'utente corrente è un amministratore per l'app. Un utente admin è un utente con il ruolo di visualizzatore, editor, proprietario o amministratore del motore dell'app. Puoi utilizzare questa funzionalità per creare funzionalità di amministrazione per l'app, anche se non autentichi altri utenti. Le API Go, Java, PHP e Python consentono di configurare facilmente gli URL come "solo amministratore".

Utenti e Datastore

L'API del servizio Utenti può restituire le informazioni dell'utente corrente come oggetto User. Sebbene gli oggetti User possano essere archiviati come valore di proprietà nel data store, ti consigliamo vivamente di evitare di farlo perché include l'indirizzo email insieme all'ID univoco dell'utente. Se un utente cambia il proprio indirizzo email e confronti il vecchio User memorizzato con il nuovo valore User , i valori non corrisponderanno. Valuta invece la possibilità 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 degli Account Google 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 speciale del server di sviluppo che richiede un indirizzo email, ma non una password. Puoi digitare qualsiasi indirizzo email in questo prompt e l'app si comporterà come se avessi eseguito l'accesso con un account con quell'indirizzo.

La schermata di accesso falsa include anche una casella di controllo che indica se l'account falso è un amministratore, ovvero se 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.

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