AWS cognito - возможно ли получить токен доступа Google и обновить его с помощью токена доступа aws при входе с помощью Google in из aws cognito
Когда я вошел в систему с помощью Google со страницы входа aws cognito, он вернул обратно токен доступа aws. Можно ли получить токен доступа Google и обновить токен с помощью токена aws. URL, используемый для входа в систему - https://example.auth.ap-southeast-1.amazoncognito.com//login?redirect_uri=redirect_uri&response_type=token&client_id=client_id.
Как aws cognito обрабатывает токен обновления при подписке через Google?
3 ответа
Короче нет.
Когда вы используете указанный выше URL-адрес для входа с использованием конечных точек OAuth Cognito Userpool, ответ от Google (т.е. токены) отправляется конечной точке ответа OAuth для домена вашего пула пользователей ( https://example.auth.ap-southeast-1.amazoncognito.com/oauth2/idpresponse). Cognito проверяет ответ от Google, генерирует идентификаторы, получает доступ и обновляет токены и возвращает их вам в зависимости от объема и используемых потоков аутентификации. Ответ от Google, то есть токены Google, где-то не хранятся, и нет вызовов Cognito API для их получения.
Что касается обновления токена при входе в систему с помощью Google, это зависит от вашего токена обновления (возвращаемого Cognito, а не токена обновления Google). Пока токен обновления, возвращенный из Cognito, действителен, вы можете использовать его для получения новых токенов id / access. Опять же, этот процесс не включает Google вообще.
Не полностью рабочее решение, но вы можете создавать настраиваемые атрибуты в когнито и отображать их на экране сопоставления атрибутов:
Затем, когда пользователь вошел в систему, я увидел, что access_token
а также expired_in
захвачены. Но я не вижуrefresh_token
. Безrefresh_token
мы не сможем получить доступ к API из серверной части. Увы, это кажется таким близким!
Я собираюсь построить ответ Сурава Саркара с идеей, которую вы можете попробовать. Если вы настроите Google в качестве поставщика OIDC (а не встроенного в Cognito) , вы можете попробовать добавить одну из этих областей:
- не в сети
- offline_access
Причина, по которой мы должны включить их, заключается в том, что по умолчанию Google возвращает только токен доступа, а не токен обновления. Вы должны указать, что вам понадобится токен обновления, чтобы получить его.
Честное предупреждение, однако, я не уверен, какой из них будет работать, и будет ли работать добавление какой-либо области, поскольку я сам не пробовал.
Если вам действительно нужен токен обновления по какой-то причине, например, для вызовов Google API, вы можете использовать Auth0, поскольку он встроен в их продукт. Я тоже этого не пробовал, и это тоже проблема, с которой я сталкиваюсь прямо сейчас, так как я не хочу использовать Auth0.
Вот мои рекомендации:AWS OpenID Connect Oath 2.0 Scopes Google OAuth 2.0