2017-05-16 14 views
0

サービスアカウント経由でPHPでIAP保護サービスに接続するにはどうすればよいですか?私はすでに認証ベアラを取得するために失敗するので、私は、私は間違ってトラックに完全に思うよ:PHPおよびサービスアカウントでIAP(Identity Aware Proxy)保護サービスに接続

<?php 
require_once 'vendor/autoload.php'; 

$scopes = ['https://www.googleapis.com/auth/iam']; 

$client = new Google_Client; 
$client->useApplicationDefaultCredentials(); 
$client->setScopes($scopes); 
$client->setSubject('[email protected]'); 
$client->setOpenidRealm('https://example.com'); 
$access_token = $client->getAccessToken(); 

var_dump($access_token); 

開始する場所や方法への任意のポインタが高く評価されるだろう。

答えて

1

あなたはhttps://cloud.google.com/iap/docs/authentication-howtoを見ましたか?残念ながら、PHPのサンプルコードはまだありませんが、それは基本的な概念を説明しています。 https://cloudplatform.googleblog.com/2017/04/Getting-started-with-Cloud-Identity-Aware-Proxy.htmlの「Robot Parade」セクションも参考になります。

残念ながら、IAPでは認証用のアクセストークンはサポートされていないため、サービスアカウントで署名されたJWTを取得する必要があり、特別な「target_audience」の主張が必要です。 $ client-> config ['signing_key']は設定されていますか?その場合、サービスアカウントの秘密鍵にアクセスできます。https://github.com/google/google-auth-library-php/blob/master/src/OAuth2.php#L417を参照してください。資格情報オブジェクトを取得できる場合は、そのようなことを行うことができ、target_audienceクレームを追加します。

あなたは私はあなたがGCE上で実行され、メタデータサーバからサービスアカウントを使用している場合、あなたはIAMを使用する必要があります唯一のケースだと思うの秘密鍵へのアクセスを持っていない場合signBlob API:https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signBlob。これには、GCEインスタンス上のいくつかのトリッキーな設定が必要です。https://cloud.google.com/iap/docs/authentication-howtoがそれを文書化します。

申し訳ありませんが、私はこれがすべてより複雑であることを知っています!私はPHPの専門家ではありませんが、これが少なくとも役立つことを願っています。 - Matthew、Identity-Awareプロキシエンジニア

+0

ありがとうございました。私がこれを実装することができれば、私は試してみるでしょう。 – user1737246

関連する問題