Из документации
Обратите внимание, что вы, вероятно, должны предоставить библиотеке место для хранения учетных данных, которые она получила для пользователя. Они должны храниться в месте, где пользователь или злоумышленник не могут получить к ним доступ. Чтобы обеспечить это, передайте объект, который имеет setitem и getitem dict API, реализованные в качестве второго аргумента вызова init (). Без этого библиотека будет работать только в одном потоке и сохранять сессии только до перезапуска сервера.
Это относится к опции credentials_store
в экземпляре OpenIDConnect
. Для поддержки постоянного входа в систему через несколько экземпляров приложения вам понадобится постоянное общее хранилище данных для этого варианта использования. Вы можете использовать общий ресурс Redis или DynamodB.
Реализация этого credentials_store
довольно проста, вы можете попробовать что-то вроде,
class RedisOpenIdCredStore:
def __init__(self):
# Handle Redis instance initialisation here
pass
def __setitem__(self, key, value):
# Set item to redis
pass
def __getitem__(self, key):
# Fetch and return item from redis if present
pass
credential_store = RedisOpenIdCredStore()
oid_connect = OpenIDConnect(app, credential_store=credential_store, ...)