Par défaut, Google Cloud Search ne reconnaît que les identités Google stockées dans l'annuaire Google Cloud (utilisateurs et groupes). Les connecteurs d'identité permettent de synchroniser les identités de votre entreprise avec les identités Google utilisées par Google Cloud Search.
Google propose les options suivantes pour développer des connecteurs d'identité:
SDK Identity Connector. Cette option est destinée aux développeurs qui programment en langage Java. Le SDK Identity Connector est un wrapper pour l'API REST qui vous permet de créer rapidement des connecteurs. Pour créer un connecteur d'identité à l'aide du SDK, reportez-vous à la section Créer un connecteur d'identité à l'aide du SDK Identity Connector.
Une API REST de bas niveau et des bibliothèques d'API Ces options sont destinées aux développeurs qui ne programment peut-être pas en Java ou dont le codebase convient mieux à une API REST ou à une bibliothèque. Pour créer un connecteur d'identité à l'aide de l'API REST, consultez la page API Directory: comptes utilisateur pour en savoir plus sur le mappage des utilisateurs, et la documentation de Cloud Identity pour en savoir plus sur le mappage des groupes.
Créer un connecteur d'identité à l'aide du SDK Identity Connector
Un connecteur d'identité standard exécute les tâches suivantes:
- Configurez le connecteur.
- Récupérez tous les utilisateurs du système d'identité de votre entreprise, puis envoyez-les à Google pour les synchroniser avec les identités Google.
- Récupérer tous les groupes du système d'identité de votre entreprise et les envoyer à Google pour synchronisation avec les identités Google
Configurer des dépendances
Vous devez inclure certaines dépendances dans votre fichier de compilation pour utiliser le SDK. Cliquez sur un onglet ci-dessous pour afficher les dépendances de votre environnement de compilation:
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'
Créer la configuration de votre connecteur
Chaque connecteur dispose d'un fichier de configuration contenant les paramètres utilisés par le connecteur, tels que l'ID de votre dépôt. Les paramètres sont définis en tant que paires clé-valeur, telles que api.sourceId=1234567890abcdef
.
Le SDK Google Cloud Search contient plusieurs paramètres de configuration fournis par Google qui sont utilisés par tous les connecteurs. Vous devez déclarer les paramètres suivants fournis par Google dans votre fichier de configuration:
- Pour un connecteur de contenu, vous devez déclarer
api.sourceId
etapi.serviceAccountPrivateKeyFile
, car ces paramètres identifient l'emplacement de votre dépôt et la clé privée nécessaire pour y accéder.
- Pour un connecteur d'identité, vous devez déclarer
api.identitySourceId
, car ce paramètre identifie l'emplacement de votre source d'identité externe. Si vous synchronisez des utilisateurs, vous devez également déclarerapi.customerId
comme ID unique pour le compte Google Workspace de votre entreprise.
À moins que vous ne souhaitiez remplacer les valeurs par défaut d'autres paramètres fournis par Google, vous n'avez pas besoin de les déclarer dans votre fichier de configuration. Pour en savoir plus sur les paramètres de configuration fournis par Google, concernant par exemple la génération de certains ID et de certaines clés, reportez-vous à la page Paramètres de configuration fournis par Google.
Vous pouvez également définir vos propres paramètres spécifiques au dépôt à utiliser dans votre fichier de configuration.
Transmettre le fichier de configuration au connecteur
Définissez la propriété système config
pour transmettre le fichier de configuration à votre connecteur. Vous pouvez définir la propriété à l'aide de l'argument -D
lors du démarrage du connecteur. Par exemple, la commande suivante permet de démarrer le connecteur avec le fichier de configuration MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Si cet argument est manquant, le SDK tente d'accéder à un fichier de configuration par défaut nommé connector-config.properties
.
Créer un connecteur d'identité pour la synchronisation complète à l'aide d'un modèle de classe
Le SDK Identity Connector contient un modèle de classe FullSyncIdentityConnector
que vous pouvez utiliser pour synchroniser tous les utilisateurs et groupes de votre dépôt d'identités avec les identités Google. Cette section explique comment effectuer une synchronisation complète des utilisateurs et des groupes à partir d'un dépôt d'identités non-Google à l'aide du modèle FullSyncIdentityConnector
.
Cette section fait référence aux extraits de code de l'exemple IdentityConnecorSample.java
. Cet exemple lit les identités des utilisateurs et des groupes à partir de deux fichiers CSV et les synchronise avec les identités Google.
Implémenter le point d'entrée du connecteur
Le point d'entrée d'un connecteur est la méthode main()
. La tâche principale de cette méthode consiste à créer une instance de la classe Application
et à appeler sa méthode start()
pour exécuter le connecteur.
Avant d'appeler application.start()
, utilisez la classe IdentityApplication.Builder
pour instancier le modèle FullSyncIdentityConnector
. FullSyncIdentityConnector
accepte un objet Repository
dont vous utiliserez les méthodes.
L'extrait de code suivant montre comment implémenter la méthode main()
:
En arrière-plan, le SDK appelle la méthode initConfig()
après que la méthode main()
de votre connecteur a appelé Application.build
.
La méthode initConfig()
effectue les tâches suivantes:
- appelle la méthode
Configuation.isInitialized()
pour vérifier que l'objetConfiguration
n'a pas été initialisé ; - Initialise un objet
Configuration
avec les paires clé/valeur fournies par Google. Chaque paire clé/valeur est stockée dans un objetConfigValue
au sein de l'objetConfiguration
.
Implémenter l'interface Repository
L'objet Repository
n'a qu'une fonction de synchronisation des identités du dépôt avec les identités Google. Lorsque vous utilisez un modèle, il vous suffit de remplacer certaines méthodes dans l'interface Repository
pour créer un connecteur d'identité. Pour le modèle FullTraversalConnector
, vous devrez probablement remplacer les méthodes suivantes:
La méthode
init()
. Pour configurer et initialiser un dépôt d'identités, remplacez la méthode init().La méthode
listUsers()
. Pour synchroniser tous les utilisateurs du dépôt d'identités avec les utilisateurs Google, remplacez la méthodelistUsers()
.La méthode
listGroups()
. Pour synchroniser tous les groupes du dépôt d'identités avec les groupes Google, remplacez la méthodelistGroups()
.(Facultatif) La méthode
close()
. Si vous devez procéder au nettoyage du dépôt, remplacez la méthodeclose()
. Cette méthode est appelée une fois lors de l'arrêt du connecteur.
Obtenir des paramètres de configuration personnalisés
Pour gérer la configuration de votre connecteur, vous devez récupérer les éventuels paramètres personnalisés contenus dans l'objet Configuration
. Cette tâche est généralement effectuée dans une méthode Repository
de classe init()
.
La classe Configuration
comporte plusieurs méthodes pour obtenir différents types de données à partir d'une configuration. Chaque méthode renvoie un objet ConfigValue
. Vous allez ensuite utiliser la méthode get()
de l'objet ConfigValue
pour récupérer la valeur réelle.
L'extrait de code suivant montre comment récupérer les valeurs userMappingCsvPath
et groupMappingCsvPath
à partir d'un objet Configuration
:
Pour obtenir et analyser un paramètre contenant plusieurs valeurs, utilisez l'un des analyseurs de type de la classe Configuration
pour analyser les données en fragments distincts.
L'extrait de code suivant (issu du connecteur du tutoriel) permet d'obtenir la liste des noms de dépôts GitHub grâce à la méthode getMultiValue
:
Obtenir le mappage de tous les utilisateurs
Remplacez la méthode
listUsers()
pour récupérer le mappage de tous les utilisateurs à partir de votre dépôt d'identités. La méthode listUsers()
accepte un point de contrôle représentant la dernière identité à synchroniser. Le point de contrôle peut être utilisé pour reprendre la synchronisation si le processus est interrompu. Pour chaque utilisateur de votre dépôt, vous accomplirez les tâches suivantes dans la méthode listUsers()
:
- Obtenir un mappage comprenant l'identité Google et l'identité externe associée
- Empaqueter ces deux éléments dans un itérateur renvoyé par la méthode
listUsers()
.
Obtenir le mappage d'un utilisateur
L'extrait de code suivant montre comment récupérer les mappages d'identité stockés dans un fichier CSV:
Empaqueter un mappage d'utilisateurs dans un itérateur
La méthode listUsers()
renvoie un Iterator
(plus précisément un CheckpointCloseableIterable
) d'objets IdentityUser
. Vous pouvez utiliser la classe CheckpointClosableIterableImpl.Builder
pour construire et renvoyer un itérateur. L'extrait de code suivant montre comment empaqueter chaque mappage dans l'itérateur de création de liste à partir de cette liste:
Obtenir un groupe
Remplacez la méthode
listGroups()
pour récupérer tous les groupes et leurs membres à partir de votre dépôt d'identités. La méthode listGroups()
accepte un point de contrôle représentant la dernière identité à synchroniser. Le point de contrôle peut être utilisé pour reprendre la synchronisation si le processus est interrompu. Pour chaque utilisateur de votre dépôt, vous accomplirez les tâches suivantes dans la méthode listGroups()
:
- Obtenez le groupe et ses membres.
- Empaqueter chaque groupe et ses membres dans un itérateur renvoyé par la méthode
listGroups()
Obtenir l'identité du groupe
L'extrait de code suivant montre comment récupérer les groupes et les membres stockés dans un fichier CSV:
Empaqueter le groupe et ses membres dans un itérateur
La méthode listGroups()
renvoie un Iterator
(plus précisément un CheckpointCloseableIterable
) d'objets IdentityGroup
.
Vous pouvez utiliser la classe CheckpointClosableIterableImpl.Builder
pour construire et renvoyer un itérateur. L'extrait de code suivant montre comment empaqueter chaque groupe et ses membres dans une liste, et créer l'itérateur à partir de cette liste:
Étapes suivantes
Voici quelques étapes que vous pouvez également suivre :
- (Facultatif) Ajoutez la méthode close() pour libérer les ressources avant l'arrêt du connecteur.
- (Facultatif) Créez un connecteur de contenu à l'aide du SDK Content Connector.