Какую бы документацию или мануал по интегрированию ldap юзеров в flask я не открыл, она всегда сводится к тому, чтобы один раз при авторизации забрать слепок юзера с ldap и запухнуть его куда-нибудь в другую базу данных , будь то sql или словарь или еще что-то.
Если почитать мой прошлый пост, то у меня были проблемы с uswgi воркерами. Каждый из них требовал отдельной авторизации одного и того же юзера. И решением было сохранять юзера в sql.
Сама концепция этого довольно костыльная. У меня есть open-ldap, а я кеширую юзеров в другое место. Но так же это приведет к лагам между изменением в open-ldap и реакции приложения на эти изменения:
Допустим у меня есть роут
@app.route('/test')
@role_required('admin')
def test():
return "ldap admin access"
роль 'admin' это принадлежность юзера к группе в ldap, но я ее кеширую вместе с юзером в sql. И выходит, что когда я исключу юзера из этой группы в ldap, его кешированная копия в приложении все равно будет иметь доступ к этому маршруту.
А ведь мне нужен максимально быстрый отклик на такие изменения. И вот уже я переписываю врапер @role_required, чтобы он опрашивал ldap в реальном времени.
Но почему я не могу просто и сразу прямо использовать ldap в качестве базы юзеров? без sql или каких-то костылей?
Или как мне очищать sql от юзеров по таймауту?