De forma predeterminada, Google Cloud Search solo reconoce las identidades de Google en Google Cloud Directory. Usa conectores de identidad para sincronizar las identidades empresariales con las identidades de Google que usa Cloud Search.
Google brinda las siguientes opciones para desarrollar conectores de identidad:
El SDK de Identity Connector: Es la mejor opción para los programadores de Java. El SDK es un wrapper alrededor de la API de REST que te permite crear conectores rápidamente. Para usar el SDK, consulta Crea un conector de identidad con el SDK de Identity Connector.
Una API de REST de bajo nivel y bibliotecas de API: Es la mejor opción para los programadores que no usan Java. Si quieres crear un conector de identidad con la API de REST, consulta API de Directory: Cuentas de usuarios para asignar usuarios y la documentación de Google Cloud Identity para asignar grupos.
Crea un conector de identidad con el SDK de conector de identidad
Un conector de identidad típico realiza las siguientes tareas:
- Configura el conector.
- Recupera los usuarios de tu sistema de identidad y los envía a Google.
- Recupera los grupos de tu sistema de identidad y los envía a Google.
Configura dependencias
Incluye estas dependencias en tu archivo de compilación.
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 tu configuración del conector
Cada conector usa un archivo de configuración para parámetros como el ID de tu repositorio.
Define los parámetros como pares clave-valor, como api.sourceId=1234567890abcdef.
El SDK de Google Cloud Search incluye parámetros proporcionados por Google para todos los conectores. Debes declarar lo siguiente en tu archivo de configuración:
- Conector de contenido: Declara
api.sourceIdyapi.serviceAccountPrivateKeyFile. Estos identifican tu repositorio y la clave privada necesaria para acceder a él.
- Conector de identidad: Declara
api.identitySourceIdpara identificar tu fuente de identidad externa. Para la sincronización de usuarios, también debes declararapi.customerId(el ID único de tu cuenta de Google Workspace).
Declara otros parámetros proporcionados por Google solo para anular sus valores predeterminados. Para obtener detalles sobre cómo generar IDs y claves, consulta Parámetros proporcionados por Google.
También puedes definir parámetros específicos del repositorio en tu archivo de configuración.
Pasa el archivo de configuración al conector
Establece la propiedad del sistema config para pasar el archivo de configuración. Usa el argumento -D cuando inicies el conector. Por ejemplo:
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
Si omites este argumento, el SDK intentará usar un archivo llamado connector-config.properties en el directorio local.
Crea un conector de identidad de sincronización completa con una clase de plantilla
El SDK incluye una plantilla FullSyncIdentityConnector para sincronizar todos los usuarios y grupos de tu repositorio. En esta sección, se explica cómo usarla.
En esta sección, se hace referencia al código de la muestra IdentityConnectorSample.java, que lee identidades de archivos CSV.
Implementa el punto de entrada del conector
El punto de entrada es el método main(). Crea una instancia de Application y llama a start() para ejecutar el conector.
Antes de llamar a application.start(), usa IdentityApplication.Builder para crear una instancia de la plantilla FullSyncIdentityConnector.
El SDK llama a initConfig() después de que tu método main() llama a Application.build(). El método initConfig():
- Garantiza que
Configurationaún no se haya inicializado. - Inicializa el objeto
Configurationcon los pares clave-valor proporcionados por Google.
Implementa la interfaz Repository
El objeto Repository sincroniza las identidades del repositorio con las identidades de Google. Cuando usas una plantilla, solo necesitas anular ciertos métodos. En el caso de FullSyncIdentityConnector, anula estos métodos:
init(): Para la configuración y la inicialización.listUsers(): Para sincronizar todos los usuarios.listGroups(): Para sincronizar todos los grupos- (Opcional)
close(): Para la limpieza durante el cierre.
Obtén parámetros de configuración personalizados
Recupera parámetros personalizados del objeto Configuration, por lo general, en el método init(). En el siguiente fragmento, se muestra cómo recuperar rutas de CSV:
Para obtener y analizar un parámetro que contenga varios valores, usa uno de los analizadores de tipos de la clase Configuration para analizar los datos en fragmentos separados.
En el siguiente fragmento del conector del instructivo, se usa el método getMultiValue para obtener una lista de nombres de repositorios de GitHub:
Obtén la asignación para todos los usuarios
Anula listUsers() para recuperar las asignaciones de usuarios. Este método acepta un punto de control para reanudar la sincronización si se interrumpe. Para cada usuario, haz lo siguiente:
- Obtén la asignación entre la identidad de Google y la identidad externa.
- Empaqueta el par en el iterador que muestra
listUsers().
Obtén una asignación de usuario
En este fragmento, se muestra cómo recuperar asignaciones de identidad de un archivo CSV:
Empaqueta una asignación de usuario en un iterador
El método listUsers() devuelve un CheckpointCloseableIterable de objetos IdentityUser.
Obtén un grupo
Anula listGroups() para recuperar grupos y sus miembros. Este método acepta un punto de control. Para cada grupo, haz lo siguiente:
- Obtén el grupo y sus miembros.
- Empaquétalos en el iterador que muestra
listGroups().
Obtén la identidad del grupo
En este fragmento, se muestra cómo recuperar grupos y miembros de un archivo CSV:
Empaqueta el grupo y sus miembros en un iterador
El método listGroups() devuelve un CheckpointCloseableIterable de objetos IdentityGroup.
Próximos pasos
- Implementa
close()para liberar recursos (opcional). - Crea un conector de contenido (opcional).