0

TestCafe が IAP で保護されたサービス/アプリに対して認証する方法について、誰かがガイドできますか? このガイドをここで読もうとしましたが、少し複雑に思えます。誰かがこれを以前に行ったことがある場合は、共有していただければ幸いです。前もって感謝します。

4

1 に答える 1

1

google-auth-libraryを使用しRequestHook、Testcafe でを拡張して実装しました。

  • JWT トークンを取得するには、Google IAP 資格情報 (リンクのステップ 1 と 2) が必要 です。
  • JWT トークンを取得したら、それをアプリケーションに対して行う各リクエストの Authorization ヘッダーとして追加します ( を拡張することによって達成されますRequestHook)。

ヘルパー関数のコードは、おおよそ次のとおりです。

import { RequestHook } from 'testcafe';

import { GoogleAuth } from 'google-auth-library';

export class GoogleIapJWTAuthorization extends RequestHook {

  constructor () {
    // No URL filtering applied to this hook
    // so it will be used for all requests.
    super();

    const auth = new GoogleAuth({
      credentials: serviceGoogleAccount
    });

    console.log('Google Authentication');

    console.log(`Loaded Service Account ${GoogleAccount.client_email}`);
    auth.getClient()
    .then(client => client.fetchIdToken(`${GoogleAccount.targetAudience}`))
    .then(token => {
        console.log(`Successfully authenticated with Identity Aware Proxy. Id Token: ${token}`);
        this._token = token;
        return token;
    })
    .catch(err => {
        console.log(`Identity Aware Proxy Authentication Failed. Id Token: ${token}`);
        console.log(JSON.stringify(err));
        process.exitCode = 1;
    });
}
  getGoogleJwtToken() {
    return this._token;
  }

  onRequest (e) {
    //Authorization header for authentication into Google Auth IAP
    e.requestOptions.headers['Authorization']= `Bearer ${this._token}`;
  }

  onResponse (e) {
      // This method must also be overridden,
      // but you can leave it blank.
  }
}
于 2020-11-09T22:09:15.283 に答える