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. Essa opção é destinada a desenvolvedores que estão programando na linguagem 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
Você precisa incluir determinadas dependências no seu arquivo de build para usar o SDK. Clique em uma guia abaixo para ver as dependências do ambiente de 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'
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, também precisará declararapi.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. Nesta seção, explicamos 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.
Nesta seção da documentação, são usados 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
com os métodos que você vai implementar.
O snippet de código abaixo mostra como implementar o método main()
:
Em segundo plano, o SDK chama o método initConfig()
depois que o método main()
do conector chama Application.build
.
O método initConfig()
realiza as seguintes tarefas:
- Chame 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
no objetoConfiguration
.
Implementar a interface Repository
O único propósito do objeto Repository
é realizar a
sincronização de identidades do repositório com identidades do Google. Ao usar um modelo, você precisa modificar apenas determinados métodos na interface Repository
para criar um conector de identidade. Para o
FullTraversalConnector
,
você provavelmente 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 configuração do seu conector, é necessário receber todos os parâmetros personalizados do objeto Configuration
. Essa tarefa geralmente é realizada em um
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, você usará o método
get()
do objeto ConfigValue
para recuperar o valor real.
O snippet a seguir mostra como recuperar os valores 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 discretos.
O snippet a seguir, do conector do tutorial, usa o método
getMultiValue
para ver 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 no 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 construir 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 os membros deles 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:
- Encontre o grupo e os membros dele.
- Empacote cada grupo e seus 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 construir 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.