Я хочу реализовать доступ на основе ролей к моим API на уровне метода. например для вызова данного метода в API вызывающая сторона должна иметь роль myapp.api.write. Я не могу найти способ сделать это, когда учетная запись службы вызывает мой API, но у меня есть решение, когда конечный пользователь вызывает API.
Пользователи переднего плана аутентифицируются с помощью Firebase, для пользователя создаются настраиваемые утверждения для определения ролей, которые имеет пользователь. Приложение NestJS проверяет роли в утверждении JWT на уровне метода, реализуя доступ на основе ролей для конечных пользователей. Это работает очень хорошо.
Однако… некоторые API вызываются из других приложений App Engine. Я хочу реализовать доступ на основе ролей в этом контексте, т. Е. App Engine A может вызывать GET на App Engine B, но не POST. Я борюсь с тем, как этого добиться.Я могу использовать прокси-сервер с идентификацией, но это не даст контроля на уровне конечной точки или метода - только все приложение, все или ничего. Мой следующий подход заключался в том, чтобы заставить App Engine A отправить JWT в App Engine B, а затем добавить пользовательскую роль в учетную запись службы, под которой работает App Engine A. Моя проблема с этим подходом заключается в том, что вы не можете создавать настраиваемые разрешения для учетной записи службы и не можете создавать настраиваемые роли без разрешения. Я надеялся создать пользовательское разрешение, такое как «myproject.data.read», и убедиться, что учетная запись вызывающей службы имеет это разрешение в App Engine B.
Кто-нибудь еще пробовал что-то подобное и заставил его работать по-другому?