Por padrão, o Google Cloud Search reconhece apenas identidades do Google armazenadas no Google Cloud Directory (usuários e grupos). Os conectores de identidade são usados para sincronizar as identidades da sua empresa com as identidades do Google usadas pelo Google Cloud Search.
O Google oferece as seguintes opções para desenvolver conectores de identidade:
O SDK do Identity Connector. Esta opção é para desenvolvedores que estão programando na linguagem de programação Java. O SDK do Identity Connector é um wrapper na API REST que permite criar conectores rapidamente. Para criar um conector de identidade com o SDK, consulte Criar um conector de identidade usando o SDK do Identity Connector.
Uma API REST de baixo nível e bibliotecas de API. Estas opções são para desenvolvedores que podem não estar programando em Java ou têm uma base de código que comporta melhor uma API REST ou uma biblioteca. Para criar um conector de identidade usando a API REST, consulte API Directory: contas de usuários para informações sobre mapeamento de usuários e Documentação do Cloud Identity para informações sobre mapeamento de grupos.
Criar um conector de identidade usando o SDK do Identity Connector
Um conector de identidade típico desempenha as seguintes tarefas:
- Configura o conector.
- Recupera todos os usuários do sistema de identidade empresarial e os envia ao Google para sincronização com as identidades do Google.
- Recupera todos os grupos do sistema de identidade empresarial e os envia ao Google para sincronização com as identidades do Google.
Configurar dependências
É necessário incluir determinadas dependências no arquivo de criação para usar o SDK. Clique na guia abaixo para ver as dependências do ambiente de criação:
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'
Criar a configuração do conector
Cada conector tem um arquivo de configuração que contém os parâmetros usados pelo conector, como o código do repositório. Os parâmetros são definidos como pares de
chave-valor, como
api.sourceId=1234567890abcdef
.
O SDK do Google Cloud Search contém vários parâmetros de configuração fornecidos pelo Google que são usados por todos os conectores. É necessário declarar os parâmetros fornecidos pelo Google a seguir no arquivo de configuração:
- No caso dos conectores de conteúdo, declare
api.sourceId
eapi.serviceAccountPrivateKeyFile
porque esses parâmetros identificam o local do seu repositório e a chave privada necessária para acessá-lo.
- No caso dos conectores de identidade, declare
api.identitySourceId
porque esse parâmetro identifica o local da sua origem de identidade externa. Se você estiver sincronizando usuários, declareapi.customerId
como o ID exclusivo da conta do Google Workspace da sua empresa.
A menos que você queira modificar os valores padrão dos outros parâmetros fornecidos pelo Google, não é necessário declará-los no arquivo de configuração. Para mais informações sobre os parâmetros de configuração fornecidos pelo Google, por exemplo, como gerar determinados IDs e chaves, consulte Parâmetros de configuração fornecidos pelo Google.
Também é possível definir parâmetros específicos do repositório para usá-los no seu arquivo de configuração.
Transmitir o arquivo de configuração para o conector
Defina a propriedade do sistema config
para transmitir o arquivo de configuração para o
conector. É possível definir a propriedade usando o argumento -D
ao iniciar
o conector. Por exemplo, o comando a seguir inicia o conector
com o arquivo de configuração MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Se esse argumento estiver ausente, o SDK tentará acessar um arquivo de configuração padrão
chamado connector-config.properties
.
Criar um conector de identidade de sincronização completo usando uma classe de modelo
O SDK do Identity Connector contém uma classe de modelo FullSyncIdentityConnector
que pode ser usada para sincronizar todos os usuários e grupos do repositório
de identidades com as identidades do Google. Esta seção explica como usar o modelo
FullSyncIdentityConnector
para realizar uma sincronização completa de usuários e grupos em um repositório de identidades
que não seja do Google.
Esta seção da documentação se refere a snippets de código da amostra
IdentityConnecorSample.java
. Essa amostra lê as identidades de usuários e grupos de dois arquivos CSV e as sincroniza com as identidades do Google.
Implementar o ponto de entrada do conector
O ponto de entrada de um conector é o
método main()
. A tarefa principal desse método é criar uma instância da classe
Application
e invocar o método
start()
para executar o conector.
Antes de chamar
application.start()
,
use a classe
IdentityApplication.Builder
para instanciar o
modelo FullSyncIdentityConnector
. O FullSyncIdentityConnector
aceita um objeto
Repository
cujos métodos você vai implementar.
O snippet de código a seguir mostra como implementar o método main()
:
Nos bastidores, o SDK chama o método
initConfig()
depois que o método main()
do conector chama
Application.build
.
O método initConfig()
executa as seguintes tarefas:
- Chama o método
Configuation.isInitialized()
para garantir que oConfiguration
não tenha sido inicializado. - Inicializa um objeto
Configuration
com os pares de chave-valor fornecidos pelo Google. Cada par de chave-valor é armazenado em um objetoConfigValue
dentro do objetoConfiguration
.
Implementar a interface Repository
A única finalidade do objeto Repository
é executar a
sincronização de identidades de repositório com identidades do Google. Ao usar
um modelo, é preciso modificar apenas determinados métodos na
interface Repository
para criar um conector de identidade. No caso de
FullTraversalConnector
,
provavelmente você vai modificar os seguintes métodos:
O método
init()
. Para executar qualquer configuração e inicialização do repositório de identidades, modifique o método init().O método
listUsers()
. Para sincronizar todos os usuários no repositório de identidades com usuários do Google, modifique o métodolistUsers()
.O método
listGroups()
. Para sincronizar todos os grupos no repositório de identidades com os Grupos do Google, modifique o métodolistGroups()
.(opcional) O método
close()
. Se você precisar realizar a limpeza do repositório, modifique o métodoclose()
. Esse método é chamado uma vez durante o encerramento do conector.
Receber parâmetros de configuração personalizados
Como parte da manipulação da configuração do conector, é necessário receber todos os
parâmetros personalizados do objeto
Configuration
. Essa tarefa geralmente é realizada no método
init()
da classe
Repository
.
A classe Configuration
tem vários métodos para receber tipos de dados diferentes
de uma configuração. Cada método retorna um
objeto
ConfigValue
. Em seguida, use o método
get()
do objeto ConfigValue
para extrair o valor real.
O snippet abaixo mostra como recuperar o valor de userMappingCsvPath
e
groupMappingCsvPath
de um objeto Configuration
:
Para receber e analisar um parâmetro que contém vários valores, use um dos
analisadores de tipo da classe Configuration
para analisar os dados em blocos distintos.
O snippet a seguir, do conector do tutorial, usa o método
getMultiValue
para receber uma lista de nomes de repositório do GitHub:
Receber o mapeamento de todos os usuários
Modifique
listUsers()
para recuperar o mapeamento de todos os usuários do repositório de identidade. O
método listUsers()
aceita um checkpoint que representa a última identidade a ser
sincronizada. O checkpoint poderá ser usado para retomar a sincronização caso o processo seja interrompido. Realize estas etapas no método listUsers()
para cada usuário no repositório:
- Receba um mapeamento que consiste na identidade do Google e na identidade externa associada.
- Empacote o par em um iterador retornado pelo método
listUsers()
.
Receber um mapeamento de usuários
Veja no snippet de código a seguir como recuperar os mapeamentos de identidade armazenados em um arquivo CSV:
Empacotar um mapeamento de usuários em um iterador
O método listUsers()
retorna um Iterator
, especificamente um
CheckpointCloseableIterable
,
de
objetos
IdentityUser
. Você pode usar a classe
CheckpointClosableIterableImpl.Builder
para criar e retornar um iterador. Veja no snippet de código a seguir como empacotar cada mapeamento na lista e criar o iterador a partir dela:
Receber um grupo
Modifique
listGroups()
para recuperar todos os grupos e seus membros do repositório de
identidade. O método listGroups()
aceita um checkpoint que representa a última
identidade a ser sincronizada. O checkpoint poderá ser usado para retomar a sincronização caso o processo seja interrompido. Realize estas etapas no método listGroups()
para cada usuário no repositório:
- Receba o grupo e os membros dele.
- Empacote cada grupo e membros em um iterador retornado pelo
método
listGroups()
.
Receber a identidade do grupo
Veja no snippet de código abaixo como recuperar os grupos e seus membros armazenados em um arquivo CSV:
Empacotar o grupo e respectivos membros em um iterador
O método listGroups()
retorna um Iterator
, especificamente um
CheckpointCloseableIterable
,
de
objetos
IdentityGroup
.
Você pode usar a classe
CheckpointClosableIterableImpl.Builder
para criar e retornar um iterador. Veja no snippet de código a seguir como empacotar cada grupo e seus membros em uma lista e criar o iterador a partir dela:
A seguir
Veja a seguir algumas das próximas etapas:
- (Opcional) Implemente o método close() para liberar todos os recursos antes do encerramento.
- (Opcional) Crie um conector de conteúdo usando o SDK do Content Connector.