2017-05-16 1 views
0

Wie wird eine Verbindung zu einem IAP-geschützten Dienst mit PHP über das Dienstkonto hergestellt? Ich kann nicht bereits die Authentifizierung Bearer bekommen, so dass ich denke, ich bin völlig auf dem Holzweg:Herstellen einer Verbindung mit einem geschützten IAP-Dienst (Identity Aware Proxy) mit PHP und Dienstkonto

<?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); 

Jeder Hinweis darauf, wo und wie würden beginnen sehr geschätzt werden.

Antwort

1

Haben Sie gesehen https://cloud.google.com/iap/docs/authentication-howto? Leider haben wir noch keinen Beispielcode für PHP, aber das erklärt die grundlegenden Konzepte. Der Abschnitt "Robot Parade" von https://cloudplatform.googleblog.com/2017/04/Getting-started-with-Cloud-Identity-Aware-Proxy.html kann ebenfalls hilfreich sein.

Leider unterstützt IAP keine Zugriffstoken für die Authentifizierung, daher müssen Sie eine JWT mit Service-Account-Signierung anfordern, und sie muss einen speziellen Anspruch "target_audience" haben. Ist $ client-> config ['signing_key'] gesetzt? Wenn dies der Fall ist, haben Sie Zugriff auf den privaten Schlüssel des Dienstkontos und können ... einen Blick auf https://github.com/google/google-auth-library-php/blob/master/src/OAuth2.php#L417 werfen, und wenn Sie das Berechtigungsnachweisobjekt abrufen können, fügen Sie den target_audience-Anspruch hinzu.

Wenn Sie nicht haben Zugriff auf den privaten Schlüssel, was ich denke, ist nur der Fall, wenn Sie auf GCE und ein Dienstkonto von der Metadaten-Server ausführen, müssen Sie die IAM verwenden signBlob API: https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signBlob. Dies erfordert einige knifflige Einstellungen in der GCE-Instanz, https://cloud.google.com/iap/docs/authentication-howto dokumentiert dies.

Sorry, ich weiß, das ist alles komplizierter als es sein sollte! Ich bin kein PHP-Experte, aber ich hoffe, das hilft zumindest. - Matthew, Identity-Aware Proxy Ingenieur

+0

Vielen Dank. Ich werde es versuchen, wenn ich es schaffen kann. – user1737246

Verwandte Themen