はじめに
実際の動作確認時などを想定して、以下で有効化したIAPにGUIだけでなく、curlでアクセスしてみました。
手順
作業するサービスアカウントを作る
- 対象のサービスアカウントを作ります。
- Roleは「IAP-secured Web App User」を付与します。
- サービスアカウントのキーは実施端末に配置します。
アクティベートする
- 以下コマンドでサービスアカウントのアクティベートをする
gcloud auth activate-service-account \
サービスアカウントメアド \
--key-file "jsonファイルの置き場" \
--project 対象プロジェクト名
アクセスする
-
IAPの対象OAuth構成のクライアントIDはIAPの画面から確認する
以下の右側のところに表示されます(セキュリティの都合上表示していません)。
-
事前に認証で利用するトークン情報を取得する
上記で取得した値を利用してトークン情報を取得する
TOKEN=`gcloud auth print-identity-token --audiences=IAPの対象OAuth構成のクライアントID`
※audiencesの「IAPの対象OAuth構成のクライアントID」の値はダブルクオーテーションでくくらない
- 対象コンテンツへアクセスする
上記のトークンを利用して対象コンテンツへアクセスする(※FQDNについてはアクセスしたいFQDNを入れてください)。
curl -H "Authorization: Bearer $TOKEN" -X 'GET' https://FQDN -H 'accept: application/json' -H 'Content-Type: application/json'
- 結果(想定したページが表示されました)
<html>
<body>
cloudrun no test dayo --- !!!!
</body>
所感
以下のような部分が実施時にでてしまいましたが、コマンドラインからもIAPのページへアクセスできることがわかりました。
- curlでのアクセス時にGETではなくPOSTで行いmethodが無いとでた
- トークン取得時に「audiences」の値をダブルクオーテーションでくくって、クライアントIDが一致しないとでた
- トークン取得せずにアクセスするとそもそもコンテンツの内容が表示されなかった
はじめにでご案内した自身が記載した記事にも書いてますがまだCloudRunのIAPはPreviewですので注意ください。