サービス アカウントによる認証

前提条件

すでに以下を行っていることを前提としています。

認証を構成する

サービス アカウントによる認証は次のように設定します。

  1. API クラスに App Engine Endpoints API をインポートします。

    import endpoints
    
  2. サービス アカウントの issuer オブジェクトを API デコレータに追加します。例:

    @endpoints.api(
        name='echo',
        version='v1',
        issuers={'serviceAccount': endpoints.Issuer(
            'YOUR_SERVICE_ACCOUNT_EMAIL',
            'https://www.googleapis.com/robot/v1/metadata/x509/YOUR_SERVICE_ACCOUNT_EMAIL')},
        audiences={'serviceAccount': ['YOUR_AUDIENCE']})
    
    • echo は、API の名前に置き換えます。
    • v1 は、API のバージョンに置き換えます。
    • YOUR_SERVICE_ACCOUNT_EMAIL は、サービス アカウントのメールアドレスに置き換えます。
    • YOUR_AUDIENCE は、呼び出し側のサービスが送信する aud フィールドの値に置き換えます。
  3. 次のメソッド定義例のように、認証情報が正しいかどうかを確認する各 API メソッドで、有効な User が存在するかどうかを確認して、存在しない場合は 401 エラーを発生させます。

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. API をデプロイします。新しいクライアントを追加するたびに API を再デプロイする必要があります。