Джанго и Карты общего доступа (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 - это боль в шее. Это худшая вещь в Джанго. Если вам нужен настроенный серверный бэкэнд, я бы предложил использовать другой фреймворк.

Другие вопросы по тегам