#php #google-cloud-platform #google-oauth #google-iam
#php #google-cloud-platform #google-oauth #google-iam
Вопрос:
Я использую Google OAuth для входа в мое веб-приложение, которое было создано как проект в облачной платформе Google, т.Е. Project1.
У меня есть пользователь с пользовательской ролью в этом проекте. После того, как я вошел в систему со своей учетной записью Google, я могу получить userinfo с помощью Google_Client
(библиотека PHP — google / apiclient). Однако мне трудно понять, как получить пользовательскую роль для вошедшего в систему пользователя. Я пытался использовать Google_Service_iam
, но не был перехвачен Google_Service_Exception: 404 Not Found
.
Это правильный способ создания веб-приложения для управления на основе ролей с использованием Google IAM?
Комментарии:
1. Это правильный способ создания веб-приложения для управления на основе ролей с использованием Google IAM? Я настроен скептически
2. Ну, мой план заключается в настройке проекта gcp для веб-приложения. Затем используйте
iam-policy-binding
с ролями для этого проекта. Поэтому, когда пользователь входит в систему, веб-приложение проверяет роль и ограничивает ресурсы в этом веб-приложении на основе роли пользователя.3. Если вы предоставите пользователям разрешения Google Cloud, ваше приложение будет ограничено, возможно, потребуется одобрить аудит безопасности. Я не рекомендую запрашивать области GCP при авторизации ваших клиентов на вашем сервере. Ваш серверный сервер может использовать учетную запись службы и отправлять запросы от имени ваших клиентов / пользователей.
Ответ №1:
Хотя это было бы как-то возможно, создав его самостоятельно, я бы не стал напрямую использовать IAM в качестве поставщика аутентификации. Вместо этого используйте платформу идентификации или что-то вроде Auth0 или Okta. Лично я предпочитаю аутентификацию Firebase, которая легко интегрируется со всеми популярными языками и фреймворками.
IAM предназначен для авторизации пользователей в GCP, а не в пользовательском веб-приложении. В вашей настройке вам придется добавлять каждого будущего пользователя в Gsuite и IAM, что очень дорого и не предназначено для этой цели.
Ответ №2:
Я бы рекомендовал взглянуть на стратегии аутентификации для разработчиков приложений.
Поскольку вам необходимо предоставлять API-интерфейсы Google Cloud от имени конечного пользователя, вы можете использовать протокол OAuth 2.0 protocol. Приложение инициирует поток согласия OAuth, в котором ваше приложение получит учетные данные пользователя. С этими учетными данными он может вызывать облачные API Google от имени пользователя.
Другим решением, которое также предложил Nebulastic, является платформа Cloud Identity, где вы можете настраивать пользовательские утверждения для ограничения доступа пользователя к ресурсу в зависимости от его роли.