Запись архива

datasette-auth-github 1.0 исправляет прежнее завершение сессий при входе через GitHub

Саймон Уиллисон выпустил версию 1.0 плагина datasette-auth-github для входа в Datasette через GitHub. В релизе исправлено создание cookie без параметра Max-Age — из-за этого сессии могли завершаться вместе с сессией браузера, особенно часто в Mobile Safari.

Страница входа через GitHub в приложении на базе Datasette
Страница входа через GitHub в приложении на базе Datasette
UNISON strike pickets at County Hall Norwich | by Roger Blackwell | openverse | by

19 сентября 2026 года Саймон Уиллисон объявил о выпуске datasette-auth-github 1.0 — стабильной версии плагина, который добавляет вход в Datasette через GitHub. Поводом для обновления стала не новая функция, а исправление поведения авторизованных сессий: на демо-сайте agent.datasette.io cookie создавались без параметра Max-Age и могли истекать уже при завершении сессии браузера.

Для разработчиков, которые используют Datasette как интерфейс к данным и внутренним инструментам, это означает более предсказуемый вход в приложение. Особенно заметной проблема могла быть на мобильных устройствах, где браузер иногда закрывает или восстанавливает вкладки иначе, чем ожидает пользователь.

Почему авторизация сбрасывалась

Уиллисон описал проблему в заметке о релизе на своём сайте: он использовал плагин на демонстрационном сервисе agent.datasette.io и заметил, что авторизованные сессии сохраняются ненадолго. Проверка показала, что cookie устанавливались без параметра Max-Age.

В таком случае браузер рассматривает cookie как действующие в рамках текущей браузерной сессии, а не как данные с явно заданным сроком хранения. На практике это может приводить к повторному входу после закрытия, перезапуска или восстановления браузера. По наблюдению автора, в Mobile Safari такое поведение проявлялось особенно часто и не обязательно было связано с тем, как пользователь работал с приложением.

Исправление вошло в pull request #80. В исходном сообщении не приводится отдельная статистика сбоев, поэтому масштаб проблемы нельзя оценить по числу затронутых пользователей. Также публикация не указывает на утечку данных или компрометацию аккаунтов: речь идёт о времени жизни cookie и необходимости повторной аутентификации.

Что изменилось в версии 1.0

Главное техническое изменение — добавление Max-Age при создании cookie, используемых плагином. Этот параметр позволяет явно указать браузеру срок действия cookie. В результате сессия не должна автоматически зависеть только от окончания текущей сессии браузера.

При этом опубликованное описание не называет конкретное значение Max-Age и не обещает, что пользовательская сессия будет бессрочной. Поэтому переход на версию 1.0 не следует трактовать как гарантию сохранения входа на любом устройстве или при любых настройках браузера. Поведение всё равно может зависеть от политики cookie, конфигурации приложения и настроек приватности.

В заметке Уиллисона также сказано, что плагин уже давно существует и протестирован с Datasette 0.65.x и веткой Datasette 1.0ax. На этом основании автор решил повысить номер версии до 1.0. Это решение отражает оценку сопровождающего проекта, но само по себе не заменяет проверку конкретной конфигурации перед обновлением.

Кому имеет смысл проверить обновление

В первую очередь релиз касается разработчиков, у которых Datasette закрывает часть интерфейса авторизацией через GitHub. Если пользователям регулярно приходится входить заново после возвращения к приложению или перезапуска мобильного браузера, причина может быть связана с прежним поведением cookie.

Обновление особенно актуально для демонстрационных стендов, внутренних панелей и инструментов, которыми пользуются с телефонов. Для рабочих окружений с собственными правилами управления сессиями важно сначала проверить, действительно ли приложение использует cookie datasette-auth-github, а не отдельный reverse proxy или другой слой авторизации.

В опубликованном сообщении нет сведений о несовместимых изменениях, миграциях или новых обязательных параметрах конфигурации. Поэтому нельзя утверждать, что обновление требует перестройки OAuth-настроек. Перед установкой в production-разработчикам стоит сверить фактический список изменений и проверить сценарий входа на тестовом экземпляре.

Информация о проекте и доступных версиях обычно публикуется на странице пакета datasette-auth-github в PyPI. Исходный код и история исправления доступны в репозитории проекта на GitHub. Эти страницы позволяют проверить, какая версия установлена, какие зависимости указаны и как именно оформлено изменение из pull request #80.

Практическая проверка после обновления

После установки версии 1.0 разработчику стоит проверить не только сам факт успешного входа, но и жизненный цикл сессии:

  • войти через GitHub на тестовом экземпляре Datasette;
  • проверить cookie в инструментах разработчика браузера и убедиться, что для неё указан Max-Age;
  • закрыть и снова открыть вкладку или браузер, особенно на мобильном устройстве;
  • проверить, не сбрасывается ли сессия после восстановления приложения;
  • отдельно протестировать выход из аккаунта, чтобы обновлённая cookie не сохраняла доступ после явного logout.

Результат такой проверки нельзя переносить на все браузеры автоматически. Исправление адресует конкретную ошибку в установке cookie, но не отменяет ограничения приватного режима, блокировку сторонних cookie или политики очистки данных, заданные пользователем и браузером.

Полное описание причины выпуска опубликовано в заметке Саймона Уиллисона: datasette-auth-github 1.0. Там же зафиксированы дата релиза, использование плагина на agent.datasette.io и совместимость, заявленная автором для Datasette 0.65.x и 1.0ax.

Источники