Melakukan autentikasi dengan akun layanan

Prasyarat

Halaman ini mengasumsikan bahwa Anda telah:

Mengonfigurasi autentikasi

Untuk mengautentikasi dengan akun layanan:

  1. 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.
    • Tambahkan parameter issuerAudiences yang berisi @ApiIssuerAudience yang ditetapkan ke penerbit akun layanan dan audiens Anda.

    Contoh:

    @Api(
        name = "echo",
        version = "v1",
        authenticators = {EspAuthenticator.class},
        issuers = {
            @ApiIssuer(
                name = "serviceAccount",
                issuer = "YOUR_SERVICE_ACCOUNT_EMAIL",
                jwksUri = "https://www.googleapis.com/robot/v1/metadata/x509/YOUR_SERVICE_ACCOUNT_EMAIL")
        },
        issuerAudiences = {
            @ApiIssuerAudience(name = "serviceAccount", audiences = "YOUR_AUDIENCE")
        })
    
    • Ganti echo dengan nama API Anda.
    • Ganti v1 dengan versi API Anda.
    • Ganti YOUR_SERVICE_ACCOUNT_EMAIL dengan email akun layanan Anda.
    • Ganti YOUR_AUDIENCE dengan nilai di kolom aud yang dikirim oleh layanan panggilan.
  2. Dalam kode penerapan API, impor Users:

    import com.google.api.server.spi.auth.common.User;
    
  3. 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;
    }
    
  4. Men-deploy API. Anda perlu men-deploy ulang API setiap kali menambahkan klien baru.