この記事では、外部 ID を使用して、Identity-Aware Proxy(IAP)で保護されたリソースにプログラムでアクセスする方法について説明します。
次のような場合に、このような操作が必要になります。
フロントエンド アプリケーションが Identity Platform を直接利用する。バックエンド API サーバーが App Engine で構築され、外部 ID を使用して IAP で保護されています。
アプリケーションが、Android、iOS、コマンドラインなど、通常のブラウザ環境以外で使用されるように設計されています。このような環境の場合、ブラウザのリダイレクトで認証を行うことはできません。
リソースへのアクセス
プログラムでリソースにアクセスする方法は次のとおりです。
ユーザーの 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 }'
IAP で保護されたエンドポイントを呼び出す場合には、認証ヘッダーに ID トークンを含めます。
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"