По умолчанию Google Cloud Search распознает только идентификационные данные Google, хранящиеся в Google Cloud Directory (пользователей и группы). Соединители удостоверений используются для синхронизации удостоверений вашего предприятия с удостоверениями Google, используемыми Google Cloud Search.
Google предоставляет следующие варианты разработки соединителей удостоверений:
SDK Identity Connector. Этот вариант предназначен для разработчиков, программирующих на языке программирования Java. SDK Identity Connector — это оболочка REST API, позволяющая быстро создавать соединители. Чтобы создать соединитель удостоверения с помощью SDK, ознакомьтесь со статьей Создание соединителя удостоверений с помощью SDK Identity Connector .
Низкоуровневый REST API и библиотеки API. Эти варианты предназначены для разработчиков, которые, возможно, не программируют на Java или чья кодовая база лучше подходит для REST API или библиотеки. Чтобы создать соединитель идентификации с помощью REST API, обратитесь к API каталога: учетные записи пользователей для получения информации о сопоставлении пользователей и документации Cloud Identity для получения информации о сопоставлении групп.
Создайте соединитель удостоверений с помощью SDK Identity Connector.
Типичный соединитель удостоверений выполняет следующие задачи:
- Настройте разъем.
- Получите всех пользователей из вашей корпоративной системы идентификации и отправьте их в Google для синхронизации с идентификаторами Google.
- Получите все группы из вашей корпоративной системы идентификации и отправьте их в Google для синхронизации с идентификаторами Google.
Настройка зависимостей
Чтобы использовать SDK, вы должны включить определенные зависимости в файл сборки. Нажмите на вкладку ниже, чтобы просмотреть зависимости для вашей среды сборки:
Мавен
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Градл
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
Создайте конфигурацию соединителя
У каждого соединителя есть файл конфигурации, содержащий параметры, используемые соединителем, например идентификатор вашего репозитория. Параметры определяются как пары ключ-значение , например api.sourceId= 1234567890abcdef
.
SDK Google Cloud Search содержит несколько предоставленных Google параметров конфигурации, используемых всеми соединителями. Вы должны объявить следующие параметры, предоставленные Google, в вашем файле конфигурации:
- Для соединителя контента необходимо объявить
api.sourceId
иapi.serviceAccountPrivateKeyFile
поскольку эти параметры определяют расположение вашего репозитория и закрытый ключ, необходимый для доступа к репозиторию.
- Для соединителя удостоверений необходимо объявить
api.identitySourceId
, поскольку этот параметр определяет расположение вашего внешнего источника удостоверений. Если вы синхронизируете пользователей, вы также должны объявитьapi.customerId
в качестве уникального идентификатора учетной записи Google Workspace вашего предприятия.
Если вы не хотите переопределить значения по умолчанию для других параметров, предоставленных Google, вам не нужно объявлять их в файле конфигурации. Дополнительную информацию о параметрах конфигурации, предоставляемых Google, например о том, как генерировать определенные идентификаторы и ключи, см. в разделе Параметры конфигурации, предоставляемые Google .
Вы также можете определить свои собственные параметры, специфичные для репозитория, для использования в файле конфигурации.
Передайте файл конфигурации в коннектор
Настройте системное свойство config
для передачи файла конфигурации в соединитель. Вы можете установить это свойство, используя аргумент -D
при запуске коннектора. Например, следующая команда запускает соединитель с файлом конфигурации MyConfig.properties
:
java -classpath myconnector.jar;... -Dconfig=MyConfig.properties MyConnector
Если этот аргумент отсутствует, SDK пытается получить доступ к файлу конфигурации по умолчанию с именем connector-config.properties
.
Создайте соединитель удостоверений полной синхронизации с помощью класса шаблона.
SDK Identity Connector содержит класс шаблона FullSyncIdentityConnector
который можно использовать для синхронизации всех пользователей и групп из репозитория удостоверений с удостоверениями Google. В этом разделе объясняется, как использовать шаблон FullSyncIdentityConnector
для полной синхронизации пользователей и групп из хранилища идентификационных данных, не относящегося к Google.
Этот раздел документации относится к фрагментам кода из примера IdentityConnecorSample.java
. В этом примере идентификаторы пользователей и групп считываются из двух файлов CSV и синхронизируются с идентификаторами Google.
Реализация точки входа соединителя
Точкой входа в коннектор является метод main()
. Основная задача этого метода — создать экземпляр класса Application
и вызвать его метод start()
для запуска соединителя.
Прежде чем вызывать application.start()
, используйте класс IdentityApplication.Builder
для создания экземпляра шаблона FullSyncIdentityConnector
. FullSyncIdentityConnector
принимает объект Repository
, методы которого вы будете реализовывать. Следующий фрагмент кода показывает, как реализовать метод main()
:
За кулисами SDK вызывает метод initConfig()
после того, как метод main()
вашего соединителя вызывает Application.build
. Метод initConfig()
выполняет следующие задачи:
- Вызывает метод
Configuation.isInitialized()
, чтобы убедиться, чтоConfiguration
не была инициализирована. - Инициализирует объект
Configuration
с помощью пар ключ-значение, предоставленных Google. Каждая пара ключ-значение хранится в объектеConfigValue
внутри объектаConfiguration
.
Реализовать интерфейс Repository
Единственная цель объекта Repository
— выполнить синхронизацию идентификаторов репозитория с идентификаторами Google. При использовании шаблона вам нужно только переопределить определенные методы в интерфейсе Repository
чтобы создать соединитель удостоверений. Для FullTraversalConnector
вы, скорее всего, переопределите следующие методы:
Метод
init()
. Чтобы выполнить настройку и инициализацию хранилища идентификационных данных, переопределите метод init().Метод
listUsers()
. Чтобы синхронизировать всех пользователей в репозитории удостоверений с пользователями Google, переопределите методlistUsers()
.Метод
listGroups()
. Чтобы синхронизировать все группы в репозитории идентификаторов с группами Google, переопределите методlistGroups()
.(необязательно) Метод
close()
. Если вам нужно выполнить очистку репозитория, переопределите методclose()
. Этот метод вызывается один раз во время завершения работы коннектора.
Получить пользовательские параметры конфигурации
В рамках обработки конфигурации вашего соединителя вам потребуется получить любые пользовательские параметры из объекта Configuration
. Эта задача обычно выполняется в методе init()
класса Repository
.
Класс Configuration
имеет несколько методов для получения различных типов данных из конфигурации. Каждый метод возвращает объект ConfigValue
. Затем вы будете использовать метод get()
объекта ConfigValue
для получения фактического значения. В следующем фрагменте показано, как получить значения userMappingCsvPath
и groupMappingCsvPath
из объекта Configuration
:
Чтобы получить и проанализировать параметр, содержащий несколько значений, используйте один из анализаторов типов класса Configuration
для анализа данных на отдельные фрагменты. В следующем фрагменте из соединителя учебника метод getMultiValue
используется для получения списка имен репозиториев GitHub:
Получить сопоставление для всех пользователей
Переопределите listUsers()
, чтобы получить сопоставление для всех пользователей из вашего хранилища идентификационных данных. Метод listUsers()
принимает контрольную точку, представляющую последний синхронизируемый идентификатор. Контрольную точку можно использовать для возобновления синхронизации в случае прерывания процесса. Для каждого пользователя в вашем репозитории вы выполните следующие шаги в методе listUsers()
:
- Получите сопоставление, состоящее из идентификатора Google и связанного внешнего идентификатора.
- Упакуйте пару в итератор, возвращаемый методом
listUsers()
.
Получить сопоставление пользователей
В следующем фрагменте кода показано, как получить сопоставления идентификаторов, хранящиеся в файле CSV:
Упакуйте сопоставление пользователей в итератор
Метод listUsers()
возвращает Iterator
, в частности CheckpointCloseableIterable
, объектов IdentityUser
. Вы можете использовать класс CheckpointClosableIterableImpl.Builder
для создания и возврата итератора. В следующем фрагменте кода показано, как упаковать каждое сопоставление в список и построить итератор из этого списка:
Получить группу
Переопределите listGroups()
чтобы получить все группы и их участников из вашего хранилища идентификационных данных. Метод listGroups()
принимает контрольную точку, представляющую последний идентификатор, подлежащий синхронизации. Контрольную точку можно использовать для возобновления синхронизации в случае прерывания процесса. Для каждого пользователя в вашем репозитории вы выполните следующие шаги в методе listGroups()
:
- Получите группу и ее участников.
- Упакуйте каждую группу и членов в итератор, возвращаемый методом
listGroups()
.
Получить идентификатор группы
В следующем фрагменте кода показано, как получить группы и участников, хранящиеся в файле CSV:
Упакуйте группу и участников в итератор.
Метод listGroups()
возвращает Iterator
, в частности CheckpointCloseableIterable
, объектов IdentityGroup
. Вы можете использовать класс CheckpointClosableIterableImpl.Builder
для создания и возврата итератора. В следующем фрагменте кода показано, как упаковать каждую группу и участников в список и построить итератор из этого списка:
Следующие шаги
Вот несколько следующих шагов, которые вы можете предпринять:
- (необязательно) Реализуйте метод close() , чтобы освободить все ресурсы перед завершением работы.
- (необязательно) Создайте соединитель контента с помощью Content Connector SDK.