Per impostazione predefinita, Google Cloud Search riconosce solo le identità Google archiviate in Google Cloud Directory (utenti e gruppi). I connettori di identità vengono utilizzati per sincronizzare le identità della tua azienda con le identità Google utilizzate da Google Cloud Search.
Google offre le seguenti opzioni per lo sviluppo di connettori di identità:
SDK Identity Connector. Questa opzione è rivolta agli sviluppatori che programmano nel linguaggio Java. L'SDK Identity Connector è un wrapper attorno all'API REST che consente di creare rapidamente connettori. Per creare un connettore di identità utilizzando l'SDK, consulta Creare un connettore di identità utilizzando l'SDK Identity Connector.
Un'API REST e librerie API di basso livello. Queste opzioni sono rivolte agli sviluppatori che potrebbero non programmare in Java o il cui codebase supporta meglio un'API REST o una libreria. Per creare un connettore di identità utilizzando l'API REST, consulta API Directory: account utente per informazioni sulla mappatura degli utenti e la documentazione di Cloud Identity per informazioni sui gruppi di mappatura.
Crea un connettore di identità utilizzando l'SDK Identity Connector
Un tipico connettore di identità esegue le seguenti attività:
- Configura il connettore.
- Recupera tutti gli utenti dal tuo sistema di identità aziendale e inviali a Google per la sincronizzazione con le identità Google.
- Recupera tutti i gruppi dal tuo sistema di identità aziendale e inviali a Google per la sincronizzazione con le identità Google.
Configura le dipendenze
Per utilizzare l'SDK, devi includere determinate dipendenze nel file di build. Fai clic su una scheda in basso per visualizzare le dipendenze per il tuo ambiente di build:
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'
Crea la configurazione del connettore
Ogni connettore ha un file di configurazione contenente i parametri utilizzati dal connettore, ad esempio l'ID del repository. I parametri sono definiti come coppie chiave/valore, ad esempio api.sourceId=1234567890abcdef
.
L'SDK di Google Cloud Search contiene diversi parametri di configurazione forniti da Google utilizzati da tutti i connettori. Nel file di configurazione devi dichiarare i seguenti parametri forniti da Google:
- Per un connettore di contenuti, devi dichiarare
api.sourceId
eapi.serviceAccountPrivateKeyFile
poiché questi parametri identificano la località del repository e la chiave privata necessarie per accedere al repository.
- Per un connettore di identità, devi dichiarare
api.identitySourceId
, poiché questo parametro identifica la località dell'origine identità esterna. Se sincronizzi gli utenti, devi anche dichiarareapi.customerId
come ID univoco per l'account Google Workspace della tua azienda.
A meno che tu non voglia eseguire l'override dei valori predefiniti di altri parametri forniti da Google, non è necessario dichiararli nel file di configurazione. Per ulteriori informazioni sui parametri di configurazione forniti da Google, ad esempio su come generare determinati ID e chiavi, consulta l'articolo sui parametri di configurazione forniti da Google.
Puoi anche definire parametri specifici del repository da utilizzare nel file di configurazione.
Passa il file di configurazione al connettore
Imposta la proprietà di sistema config
per passare il file di configurazione al connettore. Puoi impostare la proprietà utilizzando l'argomento -D
all'avvio del connettore. Ad esempio, il seguente comando avvia il connettore
con il file di configurazione MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Se questo argomento non è presente, l'SDK tenta di accedere a un file di configurazione predefinito denominato connector-config.properties
.
Crea un connettore di identità di sincronizzazione completo utilizzando una classe di modello
L'SDK Identity Connector contiene una classe modello FullSyncIdentityConnector
che puoi utilizzare per sincronizzare tutti gli utenti e i gruppi dal repository di identità con le identità Google. Questa sezione spiega come utilizzare il modello FullSyncIdentityConnector
per eseguire una sincronizzazione completa di utenti e gruppi da un repository di identità non Google.
Questa sezione della documentazione fa riferimento agli snippet di codice dell'esempio IdentityConnecorSample.java
. Questo esempio legge le identità di utenti e gruppi da due file CSV e le sincronizza con le identità Google.
Implementa il punto di ingresso del connettore
Il punto di ingresso di un connettore è il
metodo main()
. L'attività principale di questo metodo è creare un'istanza della classe Application
e richiamare il metodo start()
per eseguire il connettore.
Prima di chiamare
application.start()
,
utilizza la classe
IdentityApplication.Builder
per creare un'istanza del modello
FullSyncIdentityConnector
. FullSyncIdentityConnector
accetta un oggetto
Repository
di cui implementerai i metodi.
Il seguente snippet di codice mostra come implementare il metodo main()
:
In background, l'SDK chiama il metodo
initConfig()
dopo le chiamate al metodo main()
del connettore
Application.build
.
Il metodo initConfig()
esegue le seguenti attività:
- Chiama il metodo
Configuation.isInitialized()
per garantire cheConfiguration
non sia stato inizializzato. - Inizializza un oggetto
Configuration
con le coppie chiave-valore fornite da Google. Ogni coppia chiave-valore è archiviata in un oggettoConfigValue
all'interno dell'oggettoConfiguration
.
Implementa l'interfaccia di Repository
L'unico scopo dell'oggetto Repository
è eseguire la
sincronizzazione delle identità del repository con le identità Google. Quando utilizzi
un modello, devi eseguire l'override solo di alcuni metodi nell'interfaccia
Repository
per creare un connettore di identità. Per FullTraversalConnector
, probabilmente eseguirai l'override dei seguenti metodi:
Il metodo
init()
. Per eseguire qualsiasi configurazione e inizializzazione del repository di identità, sostituisci il metodo "init()".Il metodo
listUsers()
. Per sincronizzare tutti gli utenti nel repository di identità con utenti Google, sostituisci il metodolistUsers()
.Il metodo
listGroups()
. Per sincronizzare tutti i gruppi nel repository di identità con Google Gruppi, esegui l'override del metodolistGroups()
.(Facoltativo) Il metodo
close()
. Se devi eseguire la pulizia del repository, sostituisci il metodoclose()
. Questo metodo viene chiamato una volta durante l'arresto del connettore.
Ottieni parametri di configurazione personalizzati
Come parte della gestione della configurazione del connettore, dovrai ottenere tutti i parametri personalizzati dall'oggetto Configuration
. Questa attività viene in genere eseguita utilizzando il metodo init()
di una classe Repository
.
La classe Configuration
prevede diversi metodi per ottenere diversi tipi di dati da una configurazione. Ogni metodo restituisce un oggetto ConfigValue
. Utilizzerai quindi il metodo get()
dell'oggetto ConfigValue
per recuperare il valore effettivo.
Lo snippet seguente mostra come recuperare i valori userMappingCsvPath
e
groupMappingCsvPath
da un oggetto Configuration
:
Per recuperare e analizzare un parametro contenente diversi valori, utilizza uno dei parser
di tipo di classe Configuration
per analizzare i dati in blocchi discreti.
Lo snippet seguente, del connettore tutorial, utilizza il metodo getMultiValue
per ottenere un elenco dei nomi dei repository GitHub:
Ottieni il mapping per tutti gli utenti
Esegui l'override di listUsers()
per recuperare la mappatura di tutti gli utenti dal tuo repository di identità. Il metodo listUsers()
accetta un checkpoint che rappresenta l'ultima identità da sincronizzare. Il checkpoint può essere utilizzato per riprendere la sincronizzazione in caso di interruzione del processo. Per ogni utente nel tuo repository, eseguirai questi passaggi nel
metodo listUsers()
:
- Ottieni una mappatura composta dall'identità Google e dall'identità esterna associata.
- Pacchettizza la coppia in un iteratore restituito dal metodo
listUsers()
.
Ottieni una mappatura utente
Il seguente snippet di codice mostra come recuperare le mappature delle identità archiviate in un file CSV:
Pacchettizzazione di una mappatura utente in un iteratore
Il metodo listUsers()
restituisce un elemento Iterator
, in particolare un
CheckpointCloseableIterable
di
IdentityUser
oggetti. Puoi utilizzare la classe CheckpointClosableIterableImpl.Builder
per costruire e restituire un iteratore. Il seguente snippet di codice mostra come pacchettizzare ogni mappatura in un elenco di build dell'iteratore a partire da quell'elenco:
Crea un gruppo
Esegui l'override di listGroups()
per recuperare tutti i gruppi e i relativi membri dal tuo repository delle identità. Il metodo listGroups()
accetta un checkpoint che rappresenta l'ultima identità da sincronizzare. Il checkpoint può essere utilizzato per riprendere la sincronizzazione in caso di interruzione del processo. Per ogni utente del tuo repository, eseguirai questi
passaggi nel metodo listGroups()
:
- Recupera il gruppo e i relativi membri.
- Pacchettizza ogni gruppo e i membri in un iteratore restituito dal
metodo
listGroups()
.
Recuperare l'identità del gruppo
Il seguente snippet di codice mostra come recuperare i gruppi e i membri archiviati in un file CSV:
Pacchettizzare il gruppo e i membri in un iteratore
Il metodo listGroups()
restituisce un elemento Iterator
, in particolare un
CheckpointCloseableIterable
di
IdentityGroup
oggetti.
Puoi utilizzare la classe CheckpointClosableIterableImpl.Builder
per costruire e restituire un iteratore. Lo snippet di codice riportato di seguito mostra come pacchettizzare ogni gruppo e i membri in un elenco e come creare l'iteratore a partire da questo elenco:
Passaggi successivi
Di seguito sono riportati alcuni passaggi che puoi eseguire:
- (Facoltativo) Implementa il metodo close() per rilasciare eventuali risorse prima dell'arresto.
- (Facoltativo) Crea un connettore di contenuti utilizzando l'SDK Content Connector.