서비스 계정을 사용하여 인증

기본 요건

이 페이지에서는 다음 작업을 이미 완료했다고 가정합니다.

인증 구성

서비스 계정으로 인증하려면 다음 단계를 따르세요.

  1. 다음을 @Api 또는 메서드 주석에 추가합니다.

    • authenticators 매개변수를 주석에 추가하고 {EspAuthenticator.class} 값으로 설정합니다.
    • @ApiIssuer가 포함된 issuers 매개변수를 추가합니다.
    • 서비스 계정 발급자 및 대상으로 설정된 @ApiIssuerAudience를 포함하는 issuerAudiences 매개변수를 추가합니다.

    예를 들면 다음과 같습니다.

    @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")
        })
    
    • echo를 API의 이름으로 바꿉니다.
    • v1을 해당 API 버전으로 바꿉니다.
    • YOUR_SERVICE_ACCOUNT_EMAIL을 서비스 계정 이메일로 바꿉니다.
    • YOUR_AUDIENCE를 호출 서비스에서 전송된 aud 필드 값으로 바꿉니다.
  2. API 구현 코드에서 Users를 가져옵니다.

    import com.google.api.server.spi.auth.common.User;
    
  3. 인증이 적합한지 확인하려는 각 API 메서드에서 User가 유효한지 확인합니다. 이 샘플 메서드 정의에 표시된 것처럼 유효하지 않으면 예외가 발생합니다.

    @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. API를 배포합니다. 클라이언트를 새로 추가할 때마다 API를 다시 배포해야 합니다.