По умолчанию Google Cloud Search распознает только учетные записи Google в Google Cloud Directory. Используйте коннекторы идентификации для синхронизации корпоративных учетных записей с учетными записями Google, которые использует Cloud Search.
Google предоставляет следующие возможности для разработки коннекторов идентификации:
SDK Identity Connector: Лучший выбор для Java-программистов. SDK представляет собой оболочку для REST API, позволяющую быстро создавать коннекторы. Для использования SDK см. раздел «Создание коннектора идентификации с помощью SDK Identity Connector» .
A low-level REST API and API libraries: Best for non-Java programmers. To create an identity connector using the REST API, see Directory API: User Accounts for mapping users and Google Cloud Identity documentation for mapping groups.
Создайте коннектор идентификации с помощью 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-файлам:
To get and parse a parameter containing several values, use one of the Configuration class's type parsers to parse the data into discrete chunks. The following snippet, from the tutorial connector, uses the getMultiValue method to get a list of GitHub repository names:
Получить карту для всех пользователей
Переопределите listUsers() для получения сопоставлений пользователей. Этот метод принимает контрольную точку для возобновления синхронизации в случае её прерывания. Для каждого пользователя:
- Получите соответствие между идентификатором Google и внешним идентификатором.
- Упакуйте пару в итератор, возвращаемый функцией
listUsers().
Получите сопоставление пользователей.
Этот фрагмент кода демонстрирует извлечение сопоставлений идентификаторов из CSV-файла:
Преобразовать сопоставление пользователей в итератор.
Метод listUsers() возвращает объект CheckpointCloseableIterable содержащий объекты IdentityUser .
Соберите группу
Переопределите listGroups() , чтобы получить группы и их участников. Этот метод принимает контрольную точку. Для каждой группы:
- Найдите группу и её участников.
- Упакуйте их в итератор, возвращаемый функцией
listGroups().
Получите идентификатор группы.
Этот фрагмент кода демонстрирует извлечение групп и участников из CSV-файла:
Объедините группу и ее участников в итератор.
Метод listGroups() возвращает объект CheckpointCloseableIterable содержащий объекты IdentityGroup .
Следующие шаги
- (Необязательно) Реализуйте
close()для освобождения ресурсов. - (Необязательно) Создайте коннектор контента .