Делегирование домена с олицетворением

#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 настроен для делегирования домена:

  1. Создайте утверждение JWT с помощью:
    • iss установить адрес электронной почты S2
    • sub устанавливается на адрес электронной почты пользователя Workspace
    • scope установите для областей, которые вы внесли в белый список для идентификатора клиента S2 и делегирования в масштабах всего домена
  2. Как S1, вызовите projects.ServiceAccounts .signJwt на S2, чтобы подписать утверждение ключом S2. В результате вы получаете подписанное утверждение JWT. Чтобы это сработало, S1 должен иметь роль создателя токена учетной записи службы в S2.
  3. Отправьте утверждение в https://oauth2.googleapis.com/token . В результате вы получаете токен доступа для пользователя Workspace.