По умолчанию Google Cloud Search распознает только учетные записи Google в Google Cloud Directory. Используйте коннекторы идентификации для синхронизации корпоративных учетных записей с учетными записями Google, которые использует Cloud Search.
Google предоставляет следующие возможности для разработки коннекторов идентификации:
SDK Identity Connector: Лучший выбор для Java-программистов. SDK представляет собой оболочку для REST API, позволяющую быстро создавать коннекторы. Для использования SDK см. раздел «Создание коннектора идентификации с помощью SDK Identity Connector» .
Низкоуровневый REST API и библиотеки API: лучше всего подходит для программистов, не владеющих Java. Чтобы создать коннектор идентификации с помощью REST API, см. раздел «Directory API: User Accounts» для сопоставления пользователей и документацию Google Cloud Identity для сопоставления групп.
Создайте коннектор идентификации с помощью SDK коннектора идентификации.
Типичный коннектор идентификации выполняет следующие задачи:
- Настраивает коннектор.
- Извлекает пользователей из вашей системы идентификации и перенаправляет их в Google.
- Извлекает группы из вашей системы идентификации и отправляет их в Google.
Настройка зависимостей
Включите эти зависимости в свой файл сборки.
Мэйвен
<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 .
В состав Google Cloud Search SDK входят параметры, предоставляемые Google, для всех коннекторов. В файле конфигурации необходимо указать следующее:
- Коннектор контента : Объявите
api.sourceIdиapi.serviceAccountPrivateKeyFile. Они идентифицируют ваш репозиторий и закрытый ключ, необходимый для доступа.
- Коннектор идентификации : укажите
api.identitySourceIdдля идентификации внешнего источника идентификации. Для синхронизации пользователей также укажитеapi.customerId(уникальный идентификатор вашей учетной записи Google Workspace).
Другие параметры, предоставляемые Google, следует указывать только для переопределения их значений по умолчанию. Подробную информацию о генерации идентификаторов и ключей см. в разделе «Параметры, предоставляемые Google» .
Вы также можете определить параметры, специфичные для репозитория, в своем конфигурационном файле.
Передайте файл конфигурации коннектору.
Укажите системное свойство config , чтобы передать файл конфигурации. Используйте аргумент -D при запуске коннектора. Например:
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
Если этот аргумент не будет указан, SDK попытается использовать файл с именем connector-config.properties расположенный в локальном каталоге.
Создайте коннектор идентификации с полной синхронизацией, используя шаблонный класс.
В состав SDK входит шаблон FullSyncIdentityConnector для синхронизации всех пользователей и групп из вашего репозитория. В этом разделе объясняется, как его использовать.
В этом разделе используется код из примера IdentityConnectorSample.java , который считывает данные об идентификаторах из CSV-файлов.
Реализуйте точку входа коннектора.
Точкой входа является метод main() . Он создает экземпляр Application и вызывает start() для запуска коннектора.
Перед вызовом application.start() используйте IdentityApplication.Builder для создания экземпляра шаблона FullSyncIdentityConnector .
SDK вызывает initConfig() после того, как ваш метод main() вызывает Application.build() . Метод initConfig() :
- Гарантирует, что
Configurationеще не инициализирована. - Инициализирует объект
Configurationпарами ключ-значение, предоставленными Google.
Реализуйте интерфейс репозитория.
Объект Repository синхронизирует идентификаторы репозитория с идентификаторами Google. При использовании шаблона достаточно переопределить только определенные методы. Для FullSyncIdentityConnector переопределите следующие методы:
-
init(): Для настройки и инициализации. -
listUsers(): Для синхронизации всех пользователей. -
listGroups(): Для синхронизации всех групп. - (Необязательно)
close(): Для очистки ресурсов во время завершения работы.
Получить пользовательские параметры конфигурации
Получение пользовательских параметров из объекта Configuration , как правило, происходит в методе init() . Следующий фрагмент кода показывает, как получить пути к CSV-файлам:
Чтобы получить и проанализировать параметр, содержащий несколько значений, используйте один из парсеров типов класса Configuration для разделения данных на отдельные фрагменты. В следующем фрагменте кода из коннектора из учебного пособия используется метод getMultiValue для получения списка имен репозиториев GitHub:
Получить карту для всех пользователей
Переопределите listUsers() для получения сопоставлений пользователей. Этот метод принимает контрольную точку для возобновления синхронизации в случае её прерывания. Для каждого пользователя:
- Получите соответствие между идентификатором Google и внешним идентификатором.
- Упакуйте пару в итератор, возвращаемый функцией
listUsers().
Получите сопоставление пользователей.
Этот фрагмент кода демонстрирует извлечение сопоставлений идентификаторов из CSV-файла:
Преобразовать сопоставление пользователей в итератор.
Метод listUsers() возвращает объект CheckpointCloseableIterable содержащий объекты IdentityUser .
Соберите группу
Переопределите listGroups() , чтобы получить группы и их участников. Этот метод принимает контрольную точку. Для каждой группы:
- Найдите группу и её участников.
- Упакуйте их в итератор, возвращаемый функцией
listGroups().
Получите идентификатор группы.
Этот фрагмент кода демонстрирует извлечение групп и участников из CSV-файла:
Объедините группу и ее участников в итератор.
Метод listGroups() возвращает объект CheckpointCloseableIterable содержащий объекты IdentityGroup .
Следующие шаги
- (Необязательно) Реализуйте
close()для освобождения ресурсов. - (Необязательно) Создайте коннектор контента .