Вставить пользователя в каталог Google с учетной записью службы

Я написал приложение PHP, которое пытается создать пользователя в моем каталоге Google. Я не использую библиотеки Google. Мне удалось отправить запросы к Android Enterprise API. Я могу регистрировать и отменять регистрацию учетных записей Enterprise Service Account в моем MSA. Поэтому я предполагаю, что мой код для JWT и запросов работает.

Я создал учетную запись службы, включил «делегирование на уровне домена» и добавил следующее разрешение «https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group "в мой клиент API в окнах" Управление доступом клиента API ". Моя учетная запись службы имеет статусную роль «Редактор» в окнах «Разрешения для проекта».

Итак, сначала мой скрипт получает токен Bearer с сервера Google, для этого я создаю JWT и шифрую его своим закрытым ключом. Токен содержит следующие поля

"iss" => [email protected]
"scope" => "https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group"
"aud" => "https://www.googleapis.com/oauth2/v4/token",
"exp" => timestamp+3000,
"iat" => timestamp

Когда я делаю этот запрос, я получаю токен-носитель, но когда я использую этот токен для выполнения запроса на вставку, я всегда получаю сообщение «Не авторизован для доступа к этому ресурсу / api» с HTTP 403. Когда я добавляю поле «sub» в мой JWT и укажите адрес электронной почты администратора проекта «[email protected]». Я даже не могу получить токен-носитель, тогда я получаю ошибку 401 со следующим сообщением «Неавторизованный клиент или область в запросе».

После этого я попробовал что-то "легкое", я просто хотел получить список всех пользователей в моем каталоге. Но сервер Google просто возвращает ошибку "неверный запрос". У меня такая же ошибка с API Explorer, который находится на странице API. Может API сломан? По крайней мере, API Explorer должен работать. https://developers.google.com/admin-sdk/directory/v1/reference/users/list

У вас есть идеи, почему я не могу создавать пользователей с помощью своей учетной записи службы?

(Мне пришлось вставить несколько пробелов в области и URL-адреса, потому что мне не разрешено размещать более двух ссылок)

Привет Филип


person Philip Zultan    schedule 28.06.2016    source источник


Ответы (2)


Добавление заявки sub - это правильно, потому что вы должны выдать себя за суперадминистратора, чтобы использовать Directory API. Если вы получаете неавторизованный клиент или область в ответе на запрос, это может быть связано с опечаткой в ​​идентификаторе клиента учетной записи службы, который вы использовали для авторизации (или в областях), или из-за того, что прошло недостаточно времени (обычно это происходит в течение нескольких минут. , но это может занять до 24 часов).

См. коды ошибок JWT для получения дополнительных сведений о возможных ошибках. и причины.

person Liron    schedule 08.07.2020

У вас есть идеи, почему я не могу создавать пользователей с помощью своей учетной записи службы?

да. У вашей учетной записи службы нет полномочий на создание пользователей. Проверьте роль своей учетной записи службы в GDC, чтобы проверить, является ли она владельцем, редактором, наблюдателем и т. Д. От этого зависит объем того, что они могут сделать. Посмотрите это видео Google для живой демонстрации.

Также попробуйте узнать больше об Использование OAuth 2.0 для серверных приложений..

person noogui    schedule 29.06.2016