Halaman ini menjelaskan cara menambahkan dukungan di API Anda untuk autentikasi pengguna dari aplikasi klien menggunakan Framework Cloud Endpoints. Perhatikan bahwa klien Android dan JavaScript saat ini didukung.
Framework Endpoint mendukung autentikasi pengguna dari aplikasi klien yang menggunakan salah satu metodologi berikut:
Apa pun metode autentikasi yang Anda gunakan, di setiap metode API tempat Anda ingin
memeriksa autentikasi yang tepat, Anda harus memeriksa User
yang valid seperti
yang dijelaskan di bagian berikut:
- Mengautentikasi dengan Firebase Auth
- Mengautentikasi dengan Auth0
- Mengautentikasi dengan token ID Google
Prasyarat
Halaman ini mengasumsikan bahwa Anda telah:
Melakukan autentikasi dengan Firebase Auth
Untuk mendukung panggilan dari klien yang menggunakan Firebase Auth:
Jika Anda belum melakukannya, buat project Firebase. Project Firebase adalah project Google Cloud Console yang menggunakan layanan Firebase. Untuk mengetahui informasi selengkapnya, lihat artikel Apa yang dimaksud dengan project Firebase? dan dokumentasi Firebase.
Tambahkan kode berikut ke
@Api
atau anotasi metode:- Tambahkan parameter
authenticators
ke anotasi Anda, yang ditetapkan ke nilai{EspAuthenticator.class}
. - Tambahkan parameter
issuers
yang berisi@ApiIssuer
yang ditetapkan ke Firebase. - Tambahkan parameter
issuerAudiences
yang berisi@ApiIssuerAudience
yang ditetapkan ke Firebase dan project ID Anda.
Contoh:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", authenticators = {EspAuthenticator.class}, issuers = { @ApiIssuer( name = "firebase", issuer = "https://securetoken.google.com/YOUR_PROJECT_ID", jwksUri = "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com") }, issuerAudiences = { @ApiIssuerAudience(name = "firebase", audiences = "YOUR_PROJECT_ID") })
- Ganti
YOUR_API_NAME
dengan nama API Anda. - Ganti
VERSION_NUMBER
dengan versi API Anda, misalnya,v1
. - Ganti kedua instance
YOUR_PROJECT_ID
dengan project ID Firebase Anda.
- Tambahkan parameter
Dalam kode penerapan API, impor
Users
:import com.google.api.server.spi.auth.common.User;
Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa
User
yang valid dan tampilkan pengecualian jika tidak ada, seperti yang ditunjukkan dalam contoh definisi metode ini:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Deploy ulang API setiap kali Anda menambahkan klien baru.
Menambahkan autentikasi Firebase ke klien
Anda dapat menambahkan autentikasi Firebase ke kode seperti yang dijelaskan dalam dokumentasi Firebase. Klien harus memiliki project Google Cloud yang terkait, dan project ID harus tercantum dalam konfigurasi penerbit Firebase API seperti yang ditunjukkan di bagian sebelumnya.
Melakukan autentikasi dengan Auth0
Untuk mendukung panggilan dari klien yang menggunakan Auth0:
Tambahkan kode berikut ke
@Api
atau anotasi metode:- Tambahkan parameter
authenticators
ke anotasi Anda, yang ditetapkan ke nilai{EspAuthenticator.class}
. - Tambahkan parameter
issuers
yang berisi@ApiIssuer
yang ditetapkan ke Auth0. - Tambahkan parameter
issuerAudiences
yang berisi@ApiIssuerAudience
yang ditetapkan ke Auth0 dan client ID Auth0 Anda.
Contoh:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", authenticators = {EspAuthenticator.class}, issuers = { @ApiIssuer( name = "auth0", issuer = "https://YOUR_ACCOUNT_NAME.auth0.com/", jwksUri = "https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json") }, issuerAudiences = { @ApiIssuerAudience(name = "auth0", audiences = "AUTH0_CLIENT_ID") })
- Ganti
YOUR_API_NAME
dengan nama API Anda. - Ganti
VERSION_NUMBER
dengan versi API Anda, misalnya,v1
. - Ganti
YOUR_ACCOUNT_NAME
dengan nama akun Auth0 yang digunakan untuk klien. - Ganti
AUTH0_CLIENT_ID
dengan ID yang ingin Anda gunakan untuk klien.
- Tambahkan parameter
Dalam kode penerapan API, impor
Users
:import com.google.api.server.spi.auth.common.User;
Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa
User
yang valid dan tampilkan pengecualian jika tidak ada, seperti yang ditunjukkan dalam contoh definisi metode ini:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Deploy ulang API setiap kali Anda menambahkan klien baru.
Menambahkan autentikasi Auth0 ke klien
Anda dapat menambahkan autentikasi Auth0 ke kode seperti yang dijelaskan dalam dokumentasi Auth0. Klien harus tercantum dalam konfigurasi penerbit Auth0 API.
Mengautentikasi dengan token ID Google
Untuk mendukung panggilan dari klien yang mengautentikasi menggunakan token ID Google:
Dapatkan client ID OAuth 2 untuk setiap aplikasi klien. Pemilik aplikasi klien harus membuat client ID dari konsol Google Cloud. Untuk mengetahui petunjuknya, lihat Membuat client ID.
Tambahkan entri
clientIds
yang berisi client ID untuk setiap aplikasi klien yang Anda beri akses, dan entriaudiences
juga untuk setiap klien Android, dalam anotasi@Api
Anda.Contoh:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", clientIds = {"YOUR_CLIENT_ID"}, audiences = {"YOUR_CLIENT_ID"} )
- Ganti
YOUR_API_NAME
dengan nama API Anda. - Ganti
VERSION_NUMBER
dengan versi API Anda, misalnya,v1
. - Ganti
YOUR_CLIENT_ID
dengan client ID OAuth 2 yang dibuat di project aplikasi klien.
- Ganti
Dalam kode penerapan API, impor
Users
:import com.google.api.server.spi.auth.common.User;
Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa
User
yang valid dan tampilkan pengecualian jika tidak ada, seperti yang ditunjukkan dalam contoh definisi metode ini:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Deploy ulang API setiap kali Anda menambahkan klien baru.
Menambahkan autentikasi token ID Google ke klien
Untuk mengetahui informasi tentang cara menambahkan kode autentikasi ke klien, lihat artikel berikut:
Mengirim JWT di klien Anda
Jika Anda menggunakan JWT di klien untuk mengirim permintaan yang diautentikasi ke API, JWT harus berada di header otorisasi permintaan HTTP. JWT harus memiliki klaim yang diperlukan berikut:
iss
sub
aud
iat
exp
Langkah selanjutnya
Untuk informasi latar belakang tentang autentikasi pengguna dan perbedaannya dengan otorisasi kunci API, lihat Kapan dan mengapa menggunakan kunci API.