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 esta seção.
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 codebase 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 ID 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 seguintes parâmetros fornecidos pelo Google 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 é necessário declararapi.customerId
como o ID exclusivo da conta do G Suite 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.
Observação: não há nenhum requisito de nomenclatura estrito para o arquivo de propriedades do conector, mas recomendamos salvar o arquivo usando uma extensão .properties
ou .config
.
Transmitir o arquivo de configuração para o conector
Defina o config
de propriedade do sistema 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 denominado 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 executar uma sincronização completa de usuários e grupos em um repositório de identidades que não seja do Google.
Esta seção dos documentos 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 modelo FullSyncIdentityConnector
aceita um objeto Repository
que tem os métodos que você implementará.
Veja no snippet de código a seguir 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()
desempenha as seguintes tarefas:
- Chama o método
Configuation.isInitialized()
para garantir queConfiguration
não tenha sido inicializada. - 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 objetivo 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ê modificará os seguintes métodos:
O método
init()
. Para executar qualquer configuração e inicialização de 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 é executada 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 recuperar o valor real.
Veja no snippet a seguir 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 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
. É possível 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 respectivos 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 respectivos membros.
- Empacote cada grupo e respectivos 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 respectivos 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
.
É possível usar a classe CheckpointClosableIterableImpl.Builder
para criar e retornar um iterador. Veja no snippet de código a seguir como empacotar cada grupo e respectivos 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.