Mengautentikasi pengguna

Halaman ini menjelaskan cara menambahkan dukungan di API untuk autentikasi pengguna dari aplikasi klien menggunakan Framework Cloud Endpoints. Perlu diperhatikan 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 digunakan, di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, Anda harus memeriksa User yang valid seperti yang dijelaskan di bagian berikut:

Prasyarat

Halaman ini mengasumsikan bahwa Anda telah:

  • Membuat project Google Cloud.

  • Menambahkan pengelolaan API.

  • Jika Anda menggunakan JWT di klien untuk mengirim permintaan terautentikasi ke API, JWT harus berada di header otorisasi permintaan HTTP. JWT harus memiliki klaim yang diperlukan berikut:

    • iss
    • sub
    • aud
    • iat
    • exp

Mengautentikasi dengan Firebase Auth

Untuk mendukung panggilan dari klien yang menggunakan Firebase Auth:

  1. Impor App Engine Cloud Endpoints API di class API Anda:

    import endpoints
    
  2. Tambahkan objek penerbit Firebase untuk setiap klien ke dekorator API. Contoh:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'firebase': endpoints.Issuer(
            'https://securetoken.google.com/YOUR_PROJECT_ID,
            'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
    
    • Ganti YOUR_API_NAME dengan nama API Anda.
    • Ganti VERSION_NUMBER dengan versi API Anda, misalnya, v1.
    • Ganti kode>YOUR_PROJECT_ID dengan ID project Google Cloud klien.
  3. Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa User yang valid dan tingkatkan error 401 jika tidak ada, seperti yang ditunjukkan dalam definisi metode contoh berikut:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Men-deploy Endpoints API. Anda perlu men-deploy ulang Endpoints API setiap kali 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 dengannya, dan project ID harus tercantum di konfigurasi penerbit Firebase API.

Mengautentikasi dengan Auth0

Untuk mendukung panggilan dari klien yang menggunakan Auth0:

  1. Impor App Engine Endpoints API di class API Anda:

    import endpoints
    
  2. Tambahkan objek penerbit Auth0 untuk setiap klien ke dekorator API. Contoh:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'auth0': endpoints.Issuer(
            'https://YOUR_ACCOUNT_NAME.auth0.com',
            'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
    
    • 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.
  3. Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa User yang valid dan tingkatkan error 401 jika tidak ada, seperti yang ditunjukkan dalam definisi metode contoh berikut:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Men-deploy API. Anda harus men-deploy ulang API setiap kali menambahkan klien baru.

Menambahkan autentikasi Auth0 ke klien

Anda dapat menambahkan autentikasi Auth0 ke kode Anda 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 melakukan autentikasi menggunakan token ID Google:

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

  2. Impor App Engine Endpoints API di class API Anda:

    import endpoints
    
  3. Tentukan semua client ID yang ingin Anda beri akses ke API di allowed_client_ids, dan tentukan juga client ID milik klien Android di kolom audiences di Dekorator API. Contoh:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        allowed_client_ids=ALLOWED_CLIENT_IDS,
        audiences=[ANDROID_AUDIENCE])
    class AuthedGreetingApi(remote.Service):
        # ...
    

    Ganti ALLOWED_CLIENT_IDS dengan daftar client ID OAuth 2 yang dibuat dari setiap project klien, dan ganti ANDROID_AUDIENCE dengan daftar client ID web Android. Client ID web adalah client ID dengan penambahan .apps.googleusercontent.com, misalnya: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. Di setiap metode API tempat Anda ingin memeriksa autentikasi yang tepat, periksa User yang valid dan tingkatkan error 401 jika tidak ada, seperti yang ditunjukkan dalam definisi metode contoh berikut:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  5. Men-deploy Endpoints API. Anda perlu men-deploy ulang Endpoints API setiap kali menambahkan klien baru.

Menambahkan autentikasi token ID Google ke klien

Untuk mengetahui informasi tentang cara menambahkan kode autentikasi ke klien, lihat referensi berikut:

Langkah selanjutnya

Untuk mengetahui informasi latar belakang tentang autentikasi pengguna dan perbedaannya dengan otorisasi kunci API, lihat Kapan dan mengapa menggunakan kunci API.