API Users per i 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 accedere.
  • Chiedi all'utente dell'applicazione di creare un nuovo Account Google se non lo fa. ne hai già uno.

Mentre un utente ha eseguito l'accesso all'applicazione, l'app può accedere ai suoi . 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, 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 valore getUserPrincipal() dell'oggetto di 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 User service 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 , non corrisponderanno. Piuttosto, valuta la possibilità di utilizzare User valore ID utente come identificatore univoco stabile dell'utente.

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

Se ci sono pagine a cui l'utente non deve essere in grado di accedere se non esegue l'accesso, puoi stabilire un vincolo di sicurezza per quelle pagine descrittore (il file web.xml). Se l'utente accede a un URL con un vincolo di sicurezza e non ha eseguito l'accesso; App Engine reindirizza automaticamente l'utente alla pagina di accesso (per i Account Google o l'autenticazione di Google Workspace), quindi reindirizza l'utente alla URL dopo l'accesso o la registrazione.

Un vincolo di sicurezza può anche richiedere che l'utente sia un amministratore registrato dell'applicazione; ovvero l'utente deve disporre Visualizzatore, Editor, Proprietario o Amministratore App Engine role. 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 The Deployment Descrittore: 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

Scelta di un'opzione di autenticazione

Dopo aver creato l'app, puoi scegliere l'opzione di autenticazione che vuoi per gli utilizzi odierni. Per impostazione predefinita, l'app utilizzerà gli Account Google per l'autenticazione. Per scegliere in un'altra opzione, ad esempio per il dominio Google Workspace, vai alla pagina impostazioni per il 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.

Accesso e disconnessione

Un'applicazione è in grado di rilevare se un utente ha eseguito l'accesso all'app utilizzando il tuo l'opzione di autenticazione scelta dall'app. Se l'utente non ha eseguito l'accesso, l'app può Indirizzare l'utente agli Account Google per accedere o creare un nuovo Account Google. L'app ottiene l'URL della pagina di accesso chiamando un metodo dell'API Users. L'app può visualizzare questo URL sotto forma di link oppure può inviare un reindirizzamento HTTP al 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 mostrato è il nome dell'applicazione che hai specificato durante la registrazione dell'applicazione. Puoi modificare questo nome nella finestra Applicazione campo name della console Google Cloud pagina Credenziali.

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 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 ti reindirizza a l'URL dell'app senza visualizzare nulla.

Un utente non ha effettuato l'accesso a un'applicazione finché non gli viene richiesto di farlo dal app e inserire l'indirizzo email e la password dell'account. Ciò 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ò inoltre determinare se l'utente corrente è un amministratore dell'account dell'app. Un utente amministratore è qualsiasi utente con visualizzatore, editor, proprietario o app Amministratore motore ruolo. Puoi usare questa funzionalità per creare funzionalità amministrative per l'app, anche se ma non devi autenticare altri utenti. Le API Go, Java, PHP e Python lo rendono facile da configurare come "solo amministratore".

Utenti e Datastore

L'API servizio utenti può restituire le informazioni dell'utente corrente come oggetto User. Sebbene gli oggetti utente possano essere archiviati come valore di proprietà nel datastore, 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 loro vecchio User archiviato con il nuovo User non corrisponderanno. In alternativa, valuta la possibilità di utilizzare l'User valore 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 la tua applicazione chiama l'API Users per ottenere l'URL della schermata di accesso, l'API restituisce uno speciale URL del server di sviluppo che richiede per un indirizzo email, ma non per una password. Puoi digitare qualsiasi indirizzo email e l'app si comporterà come se avessi effettuato l'accesso a un account questo indirizzo.

La falsa schermata di accesso include anche una casella di controllo che indica se l'account falso è un amministratore; ovvero se l'account ha Visualizzatore, Editor, Proprietario o Amministratore App Engine role. 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 fasullo.