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, aplikasi dapat mengakses alamat email pengguna. Aplikasi ini juga dapat mendeteksi apakah pengguna saat ini adalah administrator (juga disebut "pengguna admin"), sehingga memudahkan implementasi area khusus admin pada aplikasi. Untuk melihat konten paket user, lihat referensi paket user.

Autentikasi pengguna di Go 1.11

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.

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcome(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-type", "text/html; charset=utf-8")
	ctx := appengine.NewContext(r)
	u := user.Current(ctx)
	if u == nil {
		url, _ := user.LoginURL(ctx, "/")
		fmt.Fprintf(w, `<a href="%s">Sign in or register</a>`, url)
		return
	}
	url, _ := user.LogoutURL(ctx, "/")
	fmt.Fprintf(w, `Welcome, %s! (<a href="%s">sign out</a>)`, u, url)
}

Menerapkan akses login dan admin dengan app.yaml

Jika Anda memiliki halaman yang mengharuskan pengguna login agar dapat mengakses, Anda dapat menerapkannya di file app.yaml.

Konfigurasi pengendali juga dapat mengharuskan pengguna untuk 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.

Guna mempelajari cara mengonfigurasi autentikasi URL, lihat cara mewajibkan status administrator atau login dalam referensi app.yaml.

OAuth di Go

Selain mode autentikasi pengguna standar, pengguna dapat diidentifikasi ke aplikasi Anda melalui OAuth. OAuth adalah protokol yang memungkinkan pengguna memberikan izin terbatas kepada pihak ketiga untuk mengakses aplikasi web atas nama mereka, tanpa membagikan kredensial mereka (nama pengguna dan sandi) kepada pihak ketiga. Informasi selengkapnya tentang OAuth API, termasuk interaksi yang diperlukan oleh klien, dapat ditemukan di dokumentasi OAuth.

Perhatikan bahwa penggunaan OAuth untuk mengidentifikasi pengguna Anda sepenuhnya ortogonal terhadap mode autentikasi pengguna standar. Misalnya, halaman yang ditandai dengan login: required atau login: admin akan menolak dimuat jika pengguna hanya diautentikasi melalui OAuth.

Berikut adalah contoh sederhana cara mengakses informasi pengguna OAuth di pengendali permintaan Go:

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/user"
)

func welcomeOAuth(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	u, err := user.CurrentOAuth(ctx, "")
	if err != nil {
		http.Error(w, "OAuth Authorization header required", http.StatusUnauthorized)
		return
	}
	if !u.Admin {
		http.Error(w, "Admin login only", http.StatusUnauthorized)
		return
	}
	fmt.Fprintf(w, `Welcome, admin user %s!`, u)
}

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".

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.