#google-workspace #google-api-dotnet-client #service-accounts
#google-workspace #google-api-dotnet-client #сервис-учетные записи
Вопрос:
В моем сценарии задействованы две учетные записи служб, а именно S1 и S2. S2 был предоставлен доступ по всему домену к рабочему пространству Google.
Я бы хотел, чтобы S1 выдавал себя за S2 (у него уже есть «Роль создателя токена учетной записи службы» на S1) и использовал его разрешения для получения некоторой информации о Google Workspace с использованием доступа S2.
Можно ли делегировать полномочия S1?
Редактировать: решение, принятое Йоханнесом, сделало свое дело, по-прежнему похоже на обходной путь, открыло проблему в google-api-dotnet-client, чтобы добавить такую функциональность.
Комментарии:
1. что такое S1 S2? вы говорите о двух разных учетных записях службы? Если учетные данные учетной записи службы были созданы в учетной записи домена, вы можете настроить делегирование.
2. @DaImTo — обновил вопрос, надеюсь, он прояснит ситуацию. S1 и S2 действительно являются двумя разными учетными записями служб, S1 имеет разрешения «Роль создателя токена учетной записи службы» для S2, а S2 имеет доступ к рабочему пространству Google по всему домену.
3. Насколько я знаю, делегирование должно быть предварительно сформировано для пользователя в домене. Я не думаю, что вы можете делегировать другой учетной записи службы. При этом вы пробовали, что произошло? В чем проблема, с которой вы столкнулись?
4. Я смог использовать S2 с делегированием пользователю. Я также смог использовать S1 и олицетворять S2. Я не смог объединить оба шага — 1. S1 олицетворяет S2 2. делегировать пользователю
5. Я лично не пробовал это, но Google поддерживает цепочку делегирования. При делегировании необходимо указать три учетные записи одновременно. S1 -> S2 -> Пользователь. При настройке олицетворения необходимо указать S2 в цепочке делегирования. Другими словами, S1 олицетворяет пользователя, объявляя S2 в цепочке делегирования.
Ответ №1:
Да, это возможно, если идентификатор клиента S2 настроен для делегирования домена:
- Создайте утверждение JWT с помощью:
iss
установить адрес электронной почты S2sub
устанавливается на адрес электронной почты пользователя Workspacescope
установите для областей, которые вы внесли в белый список для идентификатора клиента S2 и делегирования в масштабах всего домена
- Как S1, вызовите projects.ServiceAccounts .signJwt на S2, чтобы подписать утверждение ключом S2. В результате вы получаете подписанное утверждение JWT. Чтобы это сработало, S1 должен иметь роль создателя токена учетной записи службы в S2.
- Отправьте утверждение в
https://oauth2.googleapis.com/token
. В результате вы получаете токен доступа для пользователя Workspace.