Standardmäßig erkennt Google Cloud Search nur Google-Identitäten, die in Google Cloud Directory gespeichert sind (Nutzer und Gruppen). Identitätsconnectors werden verwendet, um die Identitäten Ihres Unternehmens mit Google-Identitäten zu synchronisieren, die von Google Cloud Search verwendet werden.
Google bietet die folgenden Optionen zum Entwickeln von Identitätsconnectors:
Das Identity Connector SDK. Diese Option ist für Entwickler gedacht, die in der Programmiersprache Java programmieren. Das Identity Connector SDK ist ein Wrapper für die REST API, mit dem Sie schnell Connectors erstellen können. Informationen zum Erstellen eines Identitätsconnectors mit dem SDK finden Sie im Abschnitt Mit dem Identity Connector SDK einen Identitätsconnector erstellen.
Low-Level-REST API und API-Bibliotheken Diese Optionen sind für Entwickler gedacht, die nicht mit Java programmieren oder deren Codebasis besser für eine REST API oder eine Bibliothek geeignet ist. Informationen zum Zuordnen von Nutzern finden Sie unter Directory API: Nutzerkonten und in der Cloud Identity-Dokumentation zum Erstellen eines Identitätsconnectors mit der REST API.
Mit dem Identity Connector SDK einen Identitätsconnector erstellen
Ein typischer Identitätsconnector führt die folgenden Aufgaben aus:
- Konfigurieren Sie den Connector.
- Alle Nutzer aus dem Identitätssystem Ihres Unternehmens abrufen und zur Synchronisierung mit Google-Identitäten an Google senden.
- Rufen Sie alle Gruppen aus dem Identitätssystem Ihres Unternehmens ab und senden Sie sie zur Synchronisierung mit Google-Identitäten an Google.
Abhängigkeiten einrichten
Sie müssen bestimmte Abhängigkeiten in Ihre Build-Datei aufnehmen, um das SDK verwenden zu können. Klicken Sie unten auf einen Tab, um die Abhängigkeiten für Ihre Build-Umgebung aufzurufen:
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
Connector-Konfiguration erstellen
Jeder Connector hat eine Konfigurationsdatei mit Parametern, die vom Connector verwendet werden, z. B. die ID für Ihr Repository. Parameter werden als Schlüssel/Wert-Paare definiert, z. B. api.sourceId=1234567890abcdef
.
Das Google Cloud Search SDK enthält mehrere von Google bereitgestellte Konfigurationsparameter, die von allen Connectors verwendet werden. Sie müssen die folgenden von Google bereitgestellten Parameter in Ihrer Konfigurationsdatei angeben:
- Für einen Inhaltsconnector benötigen Sie die Parameter
api.sourceId
undapi.serviceAccountPrivateKeyFile
, da diese den Speicherort des Repositorys und des privaten Schlüssels angeben, die für den Zugriff auf das Repository erforderlich sind.
- Für einen Identitätsconnector müssen Sie den Parameter
api.identitySourceId
deklarieren, da dieser den Speicherort Ihrer externen Identitätsquelle angibt. Wenn Sie Nutzer synchronisieren, müssen Sie auchapi.customerId
als eindeutige ID für das Google Workspace-Konto Ihres Unternehmens deklarieren.
Sofern Sie die Standardwerte anderer von Google bereitgestellter Parameter nicht überschreiben möchten, müssen Sie sie nicht in Ihrer Konfigurationsdatei angeben. Weitere Informationen zu den von Google bereitgestellten Konfigurationsparametern, z. B. wie Sie bestimmte IDs und Schlüssel generieren, finden Sie unter Von Google bereitgestellte Konfigurationsparameter.
Sie können auch eigene Repository-spezifische Parameter zur Verwendung in Ihrer Konfigurationsdatei definieren.
Konfigurationsdatei an den Connector übergeben
Legen Sie das Systemattribut config
fest, um die Konfigurationsdatei an den Connector zu übergeben. Sie können das Attribut mit dem Argument -D
festlegen, wenn Sie den Connector starten. Mit dem folgenden Befehl wird beispielsweise der Connector mit der Konfigurationsdatei MyConfig.properties
gestartet:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Wenn dieses Argument fehlt, versucht das SDK, auf eine Standardkonfigurationsdatei mit dem Namen connector-config.properties
zuzugreifen.
Mithilfe einer Vorlagenklasse einen Identitätsconnector mit vollständiger Synchronisierung erstellen
Das Identity Connector SDK enthält die Vorlagenklasse FullSyncIdentityConnector
, mit der Sie alle Nutzer und Gruppen aus dem Identitätsrepository mit Google-Identitäten synchronisieren können. In diesem Abschnitt wird erläutert, wie Sie die Vorlage FullSyncIdentityConnector
verwenden, um eine vollständige Synchronisierung von Nutzern und Gruppen aus einem Identitätsrepository durchzuführen, das nicht von Google stammt.
Dieser Abschnitt bezieht sich auf Code-Snippets aus dem Beispiel IdentityConnecorSample.java
. In diesem Beispiel werden Nutzer- und Gruppenidentitäten aus zwei CSV-Dateien gelesen und mit Google-Identitäten synchronisiert.
Einstiegspunkt des Connectors implementieren
Der Einstiegspunkt für einen Connector ist die Methode main()
. Die Hauptaufgabe dieser Methode besteht darin, eine Instanz der Klasse Application
zu erstellen und die Methode start()
aufzurufen, um den Connector auszuführen.
Verwenden Sie die Klasse IdentityApplication.Builder
, um die Vorlage FullSyncIdentityConnector
zu instanziieren, bevor Sie application.start()
aufrufen. Für FullSyncIdentityConnector
kann ein Repository
-Objekt verwendet werden, dessen Methoden Sie implementieren.
Das folgende Code-Snippet zeigt, wie die Methode main()
implementiert wird:
Das SDK ruft die Methode initConfig()
im Hintergrund auf, nachdem Application.build
von der Methode main()
des Connectors aufgerufen wurde.
Die Methode initConfig()
führt die folgenden Aufgaben aus:
- Ruft die Methode
Configuation.isInitialized()
auf, um zu prüfen, obConfiguration
noch initialisiert wurde. - Initialisiert ein
Configuration
-Objekt mit den von Google bereitgestellten Schlüssel/Wert-Paaren. Jedes Schlüssel/Wert-Paar wird in einemConfigValue
-Objekt innerhalb desConfiguration
-Objekts gespeichert.
Repository
-Oberfläche implementieren
Die einzige Aufgabe des Repository
-Objekts besteht darin, die Repository-Identitäten mit den Google-Identitäten zu synchronisieren. Wenn Sie eine Vorlage verwenden, müssen Sie nur bestimmte Methoden innerhalb der Repository
-Schnittstelle überschreiben, um einen Identitätsconnector zu erstellen. Für FullTraversalConnector
überschreiben Sie wahrscheinlich die folgenden Methoden:
Die Methode
init()
. Wenn Sie ein Identitäts-Repository einrichten und initialisieren möchten, überschreiben Sie die Methode „init()“.Die Methode
listUsers()
. Wenn Sie alle Nutzer im Identitäts-Repository mit Google-Nutzern synchronisieren möchten, überschreiben Sie die MethodelistUsers()
.Die Methode
listGroups()
. Wenn Sie alle Gruppen im Identitäts-Repository mit Google Groups synchronisieren möchten, überschreiben Sie die MethodelistGroups()
.Optional: Die Methode
close()
. Wenn Sie eine Repository-Bereinigung ausführen müssen, überschreiben Sie die Methodeclose()
. Diese Methode wird einmal beim Herunterfahren des Connectors aufgerufen.
Benutzerdefinierte Konfigurationsparameter abrufen
Im Rahmen der Konfiguration des Connectors müssen Sie alle benutzerdefinierten Parameter aus dem Configuration
-Objekt abrufen. Diese Aufgabe wird normalerweise in der Methode init()
der Klasse Repository
ausgeführt.
Die Klasse Configuration
bietet mehrere Methoden, unterschiedliche Datentypen aus einer Konfiguration abzurufen. Bei jeder Methode wird ein ConfigValue
-Objekt zurückgegeben. Anschließend verwenden Sie die Methode get()
des ConfigValue
-Objekts, um den tatsächlichen Wert abzurufen.
Das folgende Snippet zeigt, wie der Wert userMappingCsvPath
und groupMappingCsvPath
aus einem Configuration
-Objekt abgerufen wird:
Wenn Sie einen Parameter mit mehreren Werten abrufen und parsen möchten, verwenden Sie einen der Typparser der Configuration
-Klasse, um die Daten in separate Blöcke zu parsen.
Das folgende Snippet aus dem Connector für die Anleitung ruft mithilfe der Methode getMultiValue
eine Liste der Namen von GitHub-Repositories ab:
Zuordnung für alle Nutzer abrufen
Überschreiben Sie listUsers()
, um die Zuordnung für alle Nutzer aus Ihrem Identitäts-Repository abzurufen. An die Methode listUsers()
kann ein Prüfpunkt übergeben werden, der die letzte zu synchronisierende Identität darstellt. Dieser kann verwendet werden, um die Synchronisierung nach einer Unterbrechung fortzusetzen. Führen Sie in der Methode listUsers()
für jeden Nutzer in Ihrem Repository die folgenden Schritte aus:
- Ruft eine Zuordnung ab, die aus der Google-Identität und der zugehörigen externen Identität besteht.
- Fügen Sie das Paar einem Iterator hinzu, der von der Methode
listUsers()
zurückgegeben wird.
Nutzerzuordnung abrufen
Im folgenden Code-Snippet sehen Sie, wie die in einer CSV-Datei gespeicherten Identitätszuweisungen abgerufen werden:
Nutzerzuordnung in einen Iterator packen
Die Methode listUsers()
gibt ein Iterator
zurück, genauer gesagt ein CheckpointCloseableIterable
von IdentityUser
-Objekten. Sie können die Klasse CheckpointClosableIterableImpl.Builder
verwenden, um einen Iterator zu erstellen und zurückzugeben. Das folgende Code-Snippet zeigt, wie jede Zuordnung in eine Liste gepackt wird, um den Iterator aus dieser Liste zu erstellen:
Gruppe abrufen
Überschreiben Sie listGroups()
, um alle Gruppen und deren Mitglieder aus Ihrem Identitätsrepository abzurufen. An die Methode listGroups()
kann ein Prüfpunkt übergeben werden, der die letzte zu synchronisierende Identität darstellt. Damit lässt sich die Synchronisierung nach einer Unterbrechung wieder aufnehmen. Führen Sie in der Methode listGroups()
für jeden Nutzer in Ihrem Repository die folgenden Schritte aus:
- Gruppe und ihre Mitglieder abrufen
- Fügen Sie alle Gruppen samt Mitglieder in einen Iterator ein, der von der Methode
listGroups()
zurückgegeben wird.
Gruppenidentität abrufen
Im folgenden Code-Snippet sehen Sie, wie die in einer CSV-Datei gespeicherten Gruppen und Mitglieder abgerufen werden:
Gruppe und Mitglieder in einen Iterator packen
Die Methode listGroups()
gibt ein Iterator
zurück, genauer gesagt ein CheckpointCloseableIterable
von IdentityGroup
-Objekten.
Sie können die Klasse CheckpointClosableIterableImpl.Builder
verwenden, um einen Iterator zu erstellen und zurückzugeben. Das folgende Code-Snippet zeigt, wie Sie jede Gruppe samt Mitglieder in eine Liste verpacken und den Iterator aus dieser Liste erstellen:
Nächste Schritte
Als Nächstes könnten Sie Folgendes tun:
- Optional: Methode close() implementieren, damit vor dem Herunterfahren alle Ressourcen freigegeben werden
- Optional: Mit dem Content Connector SDK Inhaltsconnectors erstellen