Users API untuk paket layanan lama

Users API memungkinkan aplikasi untuk:

  • Mendeteksi apakah pengguna saat ini telah login.
  • Mengalihkan pengguna ke halaman login yang sesuai untuk login.
  • Meminta pengguna aplikasi membuat Akun Google baru jika mereka belum memilikinya.

Saat pengguna login ke aplikasi, aplikasi tersebut dapat mengakses alamat email pengguna. Aplikasi juga dapat mendeteksi apakah pengguna saat ini adalah administrator (juga disebut "pengguna admin"), sehingga memudahkan penerapan area khusus admin pada aplikasi.

Autentikasi pengguna di Java 8

Contoh berikut menyapa pengguna yang telah login ke aplikasi dengan pesan yang dipersonalisasi dan link untuk logout. Jika pengguna tidak login, aplikasi akan menawarkan link ke halaman login untuk Akun Google.

Anda dapat menguji apakah pengguna sudah login dan mendapatkan alamat email pengguna tersebut menggunakan API servlet standar, dengan metode getUserPrincipal() objek permintaan. Anda dapat menggunakan API Layanan pengguna untuk membuat URL login dan 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>");
    }
  }
}

API Layanan pengguna dapat menampilkan informasi pengguna saat ini sebagai objek Pengguna. Meskipun objek Pengguna dapat disimpan sebagai nilai properti di datastore, sebaiknya jangan dilakukan karena hal ini mencakup alamat email beserta ID unik pengguna. Jika pengguna mengubah alamat emailnya dan Anda membandingkan User lama yang disimpan dengan nilai User yang baru, nilai tersebut tidak akan cocok. Sebagai gantinya, pertimbangkan untuk menggunakan nilai ID pengguna User sebagai ID unik yang stabil milik pengguna.

Menerapkan akses admin dan login dengan web.xml

Jika terdapat halaman yang tidak seharusnya diakses pengguna kecuali jika mereka login, Anda dapat menetapkan batasan keamanan untuk halaman tersebut dalam deployment descriptor (file web.xml ). Jika pengguna mengakses URL dengan batasan keamanan dan pengguna tidak login, App Engine akan otomatis mengalihkan pengguna ke halaman login (untuk mengautentikasi Akun Google atau Google Workspace), lalu mengarahkan pengguna kembali ke URL setelah berhasil login atau mendaftar.

Batasan keamanan juga dapat mengharuskan pengguna menjadi administrator terdaftar untuk aplikasi; yaitu pengguna harus memiliki peran Viewer, Editor, Pemilik, atau App Engine Admin. Hal ini memudahkan pembuatan bagian situs khusus administrator, tanpa harus menerapkan mekanisme otorisasi terpisah.

Untuk mempelajari cara menetapkan batasan keamanan untuk URL, lihat Deployment Descriptor: Keamanan dan Autentikasi untuk web.xml.

Opsi autentikasi

Aplikasi Anda dapat mengautentikasi pengguna menggunakan salah satu opsi berikut:

  • Akun Google
  • Akun di domain Google Workspace Anda

Memilih opsi autentikasi

Setelah membuat aplikasi, Anda dapat memilih opsi autentikasi yang ingin digunakan. Secara default, aplikasi Anda akan menggunakan Akun Google untuk autentikasi. Untuk memilih opsi lain, seperti domain Google Workspace, buka halaman setelan untuk project Anda di konsol Google Cloud, lalu klik Edit. Di menu drop-down Autentikasi Google, pilih jenis autentikasi yang diinginkan, lalu klik Simpan.

Login dan logout

Aplikasi dapat mendeteksi apakah pengguna telah login ke aplikasi dengan opsi autentikasi yang dipilih aplikasi. Jika pengguna tidak login, aplikasi dapat mengarahkan pengguna ke Akun Google untuk login atau membuat Akun Google baru. Aplikasi akan mendapatkan URL untuk halaman login dengan memanggil metode Users API. Aplikasi dapat menampilkan URL ini sebagai link, atau menetapkan pengalihan HTTP ke URL saat pengguna mengunjungi halaman yang memerlukan autentikasi.

Jika aplikasi menggunakan Akun Google atau Google Workspace untuk autentikasi, nama aplikasi akan muncul di halaman login saat pengguna login ke aplikasi Anda. Nama yang ditampilkan adalah nama aplikasi yang Anda tentukan saat mendaftarkan aplikasi. Anda dapat mengubah nama ini di kolom Nama aplikasi pada halaman Kredensial konsol Google Cloud.

Setelah login atau membuat Akun Google, pengguna akan dialihkan kembali ke aplikasi Anda. Aplikasi ini memberikan URL alihan ke metode yang menghasilkan URL login.

Users API menyertakan metode yang menghasilkan URL untuk logout dari aplikasi. URL logout membatalkan autentikasi pengguna dari aplikasi, lalu mengalihkan kembali ke URL aplikasi tanpa menampilkan apa pun.

Pengguna tidak dapat login ke aplikasi hingga diminta untuk melakukannya oleh aplikasi dan memasukkan alamat email serta sandi akun mereka. Hal ini tetap berlaku meskipun pengguna telah login ke aplikasi lain menggunakan Akun Google mereka.

Mengakses informasi akun

Saat pengguna login, aplikasi dapat mengakses alamat email akun untuk setiap permintaan yang dibuat pengguna. Aplikasi juga dapat mengakses ID pengguna yang mengidentifikasi pengguna secara unik, meskipun pengguna mengubah alamat email akunnya.

Aplikasi juga dapat menentukan apakah pengguna saat ini adalah administrator untuk aplikasi. Pengguna admin adalah pengguna yang memiliki peran Viewer, Editor, Pemilik, atau Admin App Engine. Anda dapat menggunakan fitur ini untuk membuat fitur administratif aplikasi, meskipun Anda tidak mengautentikasi pengguna lain. API Go, Java, PHP, dan Python memudahkan konfigurasi URL sebagai "khusus administrator".

Pengguna dan Datastore

API Layanan pengguna dapat menampilkan informasi pengguna saat ini sebagai objek Pengguna. Meskipun objek Pengguna dapat disimpan sebagai nilai properti di datastore, sebaiknya jangan dilakukan karena hal ini mencakup alamat email beserta ID unik pengguna. Jika pengguna mengubah alamat emailnya dan Anda membandingkan User lama yang disimpan dengan nilai User yang baru, nilai tersebut tidak akan cocok. Sebagai gantinya, pertimbangkan untuk menggunakan nilai ID pengguna User sebagai ID unik yang stabil milik pengguna.

Akun Google dan server pengembangan

Server pengembangan menyimulasikan sistem Akun Google menggunakan layar login palsu. Saat aplikasi Anda memanggil Users API untuk mendapatkan URL layar login, API akan menampilkan URL server pengembangan khusus yang meminta alamat email, tetapi tidak meminta sandi. Anda dapat mengetik alamat email apa pun ke dalam permintaan ini, dan aplikasi akan berperilaku seolah-olah Anda login menggunakan akun dengan alamat tersebut.

Layar login palsu juga menyertakan kotak centang yang menunjukkan apakah akun palsu adalah administrator; yaitu, apakah akun memiliki peran Viewer, Editor, Pemilik, atau Admin App Engine. Jika Anda mencentang kotak ini, aplikasi akan berperilaku seolah-olah Anda login menggunakan akun administrator.

Demikian pula, Users API akan menampilkan URL logout yang membatalkan login palsu.