Мой полный сайт Flask работал нормально, пока я не добавил защищенные заголовки, сохранил сеансы в хранилище данных и зашифровал cookie. Теперь, после того как пользователи войдут в систему с помощью Google Sign-In, они получат 403 на обратный вызов после примерно часа бездействия.
Я написал и заполнил приложение для передачи файлов во Flask, используя стандартную среду выполнения Python 3 App Engine, для пользователей, имеющих внутренний адрес электронной почты компании, который аутентифицирует их с помощью OAuth2. Веб-сайт вообще не нуждается ни в каком состоянии, кроме входа в Google. Поэтому установка cookie не потребовалась бы, если бы Flask не использовал cookie для хранения сеанса.
Перед выпуском приложения я добавил защищенные заголовки, сохранил сеанс в Datastore и заменил интерфейс сеанса модулем EncryptedSession для Flask, который отправляет cookie, зашифрованный с помощью AES-256.
Это было, когда обратный вызов OAuth2 начал давать 403.
Я начал добавлять oauth2.Credentials.refresh()
на столько маршрутов, сколько необходимо, но ошибки 403 не изменились.
Это печенье. Я бы хотел, чтобы большая часть этого просто сохранялась в сеансе сервера, но никогда не передавалась в cookie, но не совсем понятно, как.
{
"_csrf_token"
"google_oauth2_credentials"
"google_oauth2_csrf_token"
"ip"
"last_seen"
"session_started"
"user_email"
"uuid"
}
Когда пользователь посещает сайт примерно через час или более бездействия, учетные данные больше не перезапускают поток аутентификации и не запрашивают логин. Они просто предоставляют 403. Пользователь должен удалять cookie каждый раз, когда это происходит.
OAuth2 несовместим с зашифрованным cookie? Проблема в сохранении сеанса в облачном хранилище данных, а не в эфемерном App Engine, который инициализирует диск при каждом запуске виртуальной машины? Есть ли способ обойтись без использования каких-либо файлов cookie и просто повторно проходить аутентификацию пользователя при каждом обновлении? Что вызывает это и что может это исправить?