Par défaut, Google Cloud Search ne reconnaît que les identités Google stockées dans Google Cloud Directory (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é :
Le 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 accélère la création 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 pas en Java, ou dont la base de code est mieux adaptée à 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 :
- Configuration du connecteur
- Récupération de tous les utilisateurs du système d'identité de votre entreprise et envoi de ceux-ci à Google pour synchronisation avec les identités Google
- Récupération de tous les groupes du système d'identité de votre entreprise et envoi de ceux-ci à Google pour synchronisation avec les identités Google
Configurer les dépendances
Vous devez inclure certaines dépendances dans votre fichier de build pour pouvoir utiliser le SDK. Cliquez sur un onglet ci-dessous pour afficher les dépendances de l'environnement associé à votre build :
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.2</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.2'
Créer la configuration de votre connecteur
Chaque connecteur possède son fichier de configuration déterminant les paramètres à utiliser, tels que l'ID de votre dépôt. Les paramètres sont définis sous la forme de paires clé/valeur, telles que
api.sourceId=1234567890abcdef.
Le SDK Google Cloud Search comprend plusieurs paramètres de configuration fournis par Google et 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 les paramètres
api.sourceId
etapi.serviceAccountPrivateKeyFile
, car ils identifient l'emplacement de votre dépôt et de la clé privée nécessaire pour accéder à celui-ci.
- Pour un connecteur d'identité, vous devez déclarer le paramètre
api.identitySourceId
, car il identifie l'emplacement de votre source d'identité externe. Si vous synchronisez des utilisateurs, vous devez également déclarerapi.customerId
en tant qu'identifiant unique du compte G Suite de votre entreprise.
Vous n'avez pas besoin de déclarer d'autres paramètres fournis par Google dans votre fichier de configuration, sauf si vous souhaitez ignorer leur valeur par défaut. Pour plus d'informations sur les paramètres de configuration fournis par Google (concernant la génération de certains ID et de certaines clés, par exemple), reportez-vous à la page Paramètres de configuration fournis par Google.
Vous pouvez également définir des paramètres de dépôt personnalisés à utiliser dans votre fichier de configuration.
Remarque : Bien qu'aucune convention d'attribution de noms stricte ne s'applique au fichier de propriétés des connecteurs, nous vous recommandons néanmoins d'enregistrer votre fichier sous l'extension .properties
ou .config
.
Transmettre le fichier de configuration au connecteur
Définissez la propriété système config
de manière à transmettre le fichier de configuration à votre connecteur. Pour ce faire, utilisez l'argument -D
lors du démarrage du connecteur. La commande suivante permet de démarrer le connecteur avec le fichier de configuration MyConfig.properties, par exemple :
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Si cet argument n'est pas transmis, 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'une classe modèle
Le SDK Identity Connector comprend une classe de modèle, FullSyncIdentityConnector
, qui vous permet de 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 de la documentation fait référence à des extraits de code tirés de l'exemple IdentityConnecorSample.java
. Cet exemple lit les identités des utilisateurs et des groupes à partir de deux fichiers CSV, puis les synchronise avec les identités Google.
Ajouter le point d'entrée du connecteur
Le point d'entrée d'un connecteur est la méthode main()
. La fonction 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
. Le modèle FullSyncIdentityConnector
accepte un objet
Repository
dont vous utiliserez les méthodes.
L'extrait de code suivant montre comment mettre en œuvre la méthode main()
:
En coulisses, 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()
accomplit les tâches suivantes :
- Appel de la méthode
Configuation.isInitialized()
pour confirmer queConfiguration
n'a pas été initialisé - Initialisation d'un objet
Configuration
avec les paires clé/valeur fournies par Google. Chaque paire clé/valeur est stockée dans un objetConfigValue
à l'intérieur de l'objetConfiguration
.
Ajouter l'interface Repository
L'objet Repository
n'a qu'une fonction, qui consiste à synchroniser les identités du dépôt avec celles de Google. Lorsque vous utilisez un modèle, il vous suffit d'ignorer certaines méthodes dans l'interface Repository
pour créer un connecteur d'identité. Pour le connecteur FullTraversalConnector
, vous devrez probablement ignorer les méthodes suivantes :
La méthode
init()
. Pour configurer et initialiser un dépôt d'identités, ignorez la méthodeinit()
.La méthode
listUsers()
. Pour synchroniser tous les utilisateurs du dépôt d'identités avec les utilisateurs Google, ignorez la méthodelistUsers()
.La méthode
listGroups()
. Pour synchroniser tous les groupes du dépôt d'identités avec les groupes Google, ignorez la méthodelistGroups()
.(Facultatif) La méthode
close()
. Si vous devez procéder à un nettoyage du dépôt, ignorez la méthodeclose()
. Celle-ci est appelée une fois lors de l'arrêt du connecteur.
Récupérer les paramètres de configuration personnalisés
Dans le cadre de la gestion de 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 init()
de la classe Repository
.
La classe Configuration
comprend plusieurs méthodes qui permettent d'obtenir différents types de données à partir d'une configuration.
Chaque méthode renvoie un objet ConfigValue
. Pour récupérer la valeur réelle, utilisez ensuite la méthode get()
de l'objet ConfigValue
.
L'extrait suivant montre comment extraire les valeurs userMappingCsvPath
et groupMappingCsvPath
à partir d'un objet de Configuration
:
Pour récupérer et analyser un paramètre contenant plusieurs valeurs, utilisez l'un des analyseurs de type de la classe Configuration
, lesquels permettent d'analyser les données par 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
:
Récupérer le mappage de tous les utilisateurs
Ignorez 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 servir à reprendre la synchronisation si le processus doit être interrompu. Pour chaque utilisateur de votre dépôt, vous accomplirez les tâches suivantes dans la méthode listUsers()
:
- Récupérer 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()
Récupérer un mappage d'utilisateurs
L'extrait de code suivant montre comment récupérer les mappages d'identités 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 construire et renvoyer un itérateur à l'aide de la classe CheckpointClosableIterableImpl.Builder
. L'extrait de code suivant montre comment empaqueter chaque mappage dans l'itérateur de création de liste à partir de cette liste :
Récupérer un groupe
Ignorez 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 servir à reprendre la synchronisation si le processus doit être interrompu. Pour chaque utilisateur de votre dépôt, vous accomplirez les tâches suivantes dans la méthode listGroups()
:
- Récupérer le groupe et ses membres
- Empaqueter chaque groupe et ses membres dans un itérateur renvoyé par la méthode
listGroups()
Récupérer 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 construire et renvoyer un itérateur à l'aide de la classe CheckpointClosableIterableImpl.Builder
. L'extrait de code suivant montre comment empaqueter chaque groupe et ses membres dans l'itérateur de création de liste à partir de cette liste :
Prochaines étapes
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.