Google 以外のリソースへのプログラムによるアクセス

この記事では、外部 ID を使用して、Identity-Aware Proxy(IAP)で保護されたリソースにプログラムでアクセスする方法について説明します。

次のような場合に、このような操作が必要になります。

  • フロントエンド アプリケーションが Identity Platform を直接利用する。バックエンド API サーバーが App Engine で構築され、外部 ID を使用して IAP で保護されています。

  • アプリケーションが、Android、iOS、コマンドラインなど、通常のブラウザ環境以外で使用されるように設計されています。このような環境の場合、ブラウザのリダイレクトで認証を行うことはできません。

リソースへのアクセス

プログラムでリソースにアクセスする方法は次のとおりです。

  1. ユーザーの ID トークンを取得します。

    Node.js

    ユーザーがログインしていることを確認します。次の例は、メールアドレスとパスワードでユーザーをログインさせる簡単なコードです。

    // If signing in using project-level email/password IdP.
    // auth.tenantId = null; // This is null by default.
    // For signing in to a specific tenant using email/password.
    auth.tenantId = 'myTenantId';
    auth.signInWithEmailAndPassword(email, password)
      .then((user) => {
        // User signed in. ID token can now be retrieved.
      })
      .catch((error) => {
        // Handler error.
      });
    

    これにより、user オブジェクトで ID トークンを取得できます。

    user.getIdToken()
      .then((idToken) => {
        // idToken is now available and can be sent to API server.
      })
      .catch((error) => {
        // Handler error.
      });
    

    REST

    signInWithPassword を呼び出すと、レスポンスで ID トークンが返されます。

    curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=API-KEY' \
    -H 'Content-Type: application/json' \
    --data-binary '{
      "email":"EMAIL",
      "password":"PASSWORD",
      "returnSecureToken":true,
      "tenantId":"TENANT-ID" # Only used in multi-tenancy
      }'
    
  2. IAP で保護されたエンドポイントを呼び出す場合には、認証ヘッダーに ID トークンを含めます。

    curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"