Базовая / дайджестная HTTP-аутентификация в приложении Pyramid

#python #authentication #pyramid

#python #аутентификация #пирамида

Вопрос:

У меня есть очень простое приложение Pyramid (мое первое), и я хотел бы «заблокировать» пару вызываемых объектов просмотра с помощью базовой / дайджестной HTTP-аутентификации (всплывающее окно общего входа). Это приложение будет администрироваться только одним пользователем. Поэтому мне нужна очень простая безопасность.

Я прочитал теорию о политике аутентификации Pyramid, AuthKit, repoze.кто и т. Д. Но все же может кто-нибудь дать мне простой пример / идею очень простой безопасности в приложении Pyramidd, просто чтобы заблокировать несколько вызываемых vew из мира?

Примечание: если кто-то другой выполняет базовую аутентификацию для wsgi-приложения через Nginx, а вы использовали Cookbook conf для запуска своего приложения с восходящим потоком, вы можете столкнуться с проблемой, когда после успешной аутентификации Nginx приведет вас к 404. Все, что вам нужно сделать, это указать ваше ограниченное местоположение на тот же восходящий поток:

 location /restricted {
        proxy_pass              http://myapp-site;
        auth_basic              "Restricted";
        auth_basic_user_file    htpasswd;
    }
  

Ответ №1:

Если у вас есть только один раздел «/ admin» с одним администратором, вы можете настроить nginx как обратный прокси-сервер с аутентификацией.

Я использую это для «защиты» общедоступных разделов демонстрационных сайтов перед открытием для всего мира.

Преимущество заключается в том, что вы можете использовать точно такой же метод для обслуживания приложений Django или Pylons, и он очень прост, но надежен.

Комментарии:

1. Спасибо! Раньше я делал такие вещи с .htaccess, когда был разработчиком php. И теперь с WSGI я просто забыл, что я все еще могу делать это на сервере (и да, я запускаю свое приложение Pyramid через Nginx). Тем не менее, я должен признать, я пропустил хороший рецепт из Pyramid Cookbook . Я изучил это, понял и был готов к реализации, а затем увидел ваш ответ 🙂