Ich versuche, eine Server-Anwendung zu erstellen, die Benutzer zu den Gruppen meiner Domäne hinzufügen/entfernen wird. Beachten Sie, dass es keine Interaktion mit Benutzern gibt, es ist eine Server-zu-Server-Anwendung.Wie verwende ich JWT, um mit NodeJS-Client-Bibliotheken auf Google Directory (Admin SDK) zuzugreifen?
registrierte ich meine Anwendung in der Google API-Konsole heruntergeladen den Schlüssel und verwandeln sie durch .PEM
Ausgabeopenssl pkcs12 -in my_google_key.p12 -out my_google_key.pem -nocerts -nodes
Dann habe ich bereits in der Domainverwaltung, Sicherheit -> Erweiterte Einstellungen -> Authentication -> OAuth Client-Zugriff verwalten. Dort habe ich einen Datensatz in Authorized API Clients hinzugefügt. Ich benutzte die ID-Client ich aus dem Dienstkonto in Console bekam und verwendet -umfang:
https://www.googleapis.com/auth/admin.directory.group.
I googleapis für NodeJS installiert, mit
npm install googleapis
Und hier ist mein Code:
var googleapis = require('googleapis');
var SERVICE_ACCOUNT_EMAIL = 'My Service Account E-mail Address';
var SERVICE_ACCOUNT_KEY_FILE = 'my_google_key.pem'; // The .pem file is at the root of my application
var jwt = new googleapis.auth.JWT(
SERVICE_ACCOUNT_EMAIL,
SERVICE_ACCOUNT_KEY_FILE,
null,
['https://www.googleapis.com/auth/admin.directory.group']
);
var client;
googleapis
.discover('admin', 'directory_v1')
.execute(function(err, data) {
client = data;
jwt.authorize(function(err, result) {
console.log(jwt);
client.admin.groups.list({
"customer": "my_customer", // This is actually "my_customer"
"domain": "domain.com" // The domain name I administer
})
.withAuthClient(jwt)
.execute(function(err, result) {
console.log(err);
console.log(result);
});
});
});
Und das Ergebnis der Ausführung dieses Codes ist:
{ errors:
[ { domain: 'global',
reason: 'forbidden',
message: 'Not Authorized to access this resource/api' } ],
code: 403,
message: 'Not Authorized to access this resource/api' }
Was fehlt mir? Wie autorisiere ich meine Anwendung mit dem Admin SDK?