Джанго и Карты общего доступа (CAC)
Запланировано веб-приложение, написанное на Python, Django - ведущий конкурент в качестве фреймворка.
Одним из требований является доступ к CAC, без необходимости вручную вводить имя пользователя и пароль. Из того, что я могу сказать, доступ к CAC не является частью "батарей", включенных в Django.
Как монолитный фреймворк (не обязательно плохой атрибут), у Django есть репутация высокого уровня обслуживания после того, как вы измените ядро. Могу ли я легко добавить доступ CAC к сайту Django? Можно ли после этого легко поддерживать?
Или, может быть, мы должны рассмотреть другой каркас Python?
К вашему сведению.. интересная презентация по ссылке доступа CAC
3 ответа
Вам не нужно изменять ядро, чтобы включить это. Django поддерживает сторонние аутентификационные бэкэнды, и их довольно легко написать - вам просто нужно поддерживать два метода, get_user
а также authenticate
, Таким образом, ваша реализация просто должна выполнить эти операции, используя ваш интерфейс CAC, и все будет работать как обычно.
Смотрите документацию для деталей.
Отредактированный после других ответов, я не знаю, почему люди говорят, что это трудно в Джанго. Да, многие части Django сложно настроить. Но это одна конкретная часть, которая сделана очень легко. Я написал несколько бэкэндов аутентификации в Django, и они не только очень просты, но и "просто работают" с остальной частью фреймворка, включая администратора. Нет необходимости изменять что-либо еще, чтобы заставить это работать.
Я только что сделал это сегодня, создав подкласс django.contrib.auth.middleware.RemoteUserMiddleware и изменил свойство заголовка на то, которое я установил в моем apache conf. Я просто добавил django.contrib.auth.backends.RemoteUserBackend и мое промежуточное ПО в настройки, и он работает отлично.
Расширение contrib.auth - это боль в шее. Это худшая вещь в Джанго. Если вам нужен настроенный серверный бэкэнд, я бы предложил использовать другой фреймворк.