2010-09-19 3 views
1

Планируется веб-приложение, написанное на Python, Django является ведущим претендентом в качестве рамки.Django и общие карты доступа (CAC)

Одним из требований является доступ CAC, без необходимости вводить имя пользователя и пароль. Из того, что я могу сказать, доступ CAC не является частью «батарей», включенных в Django.

Как монолитный каркас (не обязательно плохой атрибут). Django имеет репутацию за то, что вы поддерживаете техническое обслуживание после изменения ядра. Могу ли я легко добавить доступ CAC к сайту Django? Можно ли его легко поддерживать в дальнейшем?

Или, может быть, мы должны рассмотреть другую структуру Python?

FYI .. интересная презентация по CAC доступа link

+0

Неужели вам это удалось? Я ищу решение. –

ответ

1

Для этого не требуется модифицировать ядро. Django поддерживает сторонние серверы аутентификации, и их довольно легко написать - вам просто нужно поддерживать два метода: get_user и authenticate. Таким образом, ваша реализация просто должна выполнять эти операции с использованием интерфейса CAC, и все будет работать как обычно.

Для получения более подробной информации см. the documentation.

Отредактировано после других ответов Я не знаю, почему люди говорят, что это сложно в Django. Да, многие части Django трудно настроить. Но это одна конкретная часть, которая сделана очень легко. Я написал несколько сценариев аутентификации в Django, и они не только очень простые, но они «просто работают» с остальной частью фреймворка, включая администратора. Нет необходимости изменять что-либо еще, чтобы заставить это работать.

+0

Спасибо Dan. Я дам ему шанс и надеюсь на «и все будет работать как обычно». – Paulb

0

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

0

Я только что сделал это сегодня, выполнив подкласс django.contrib.auth.middleware.RemoteUserMiddleware и изменив свойство заголовка на тот, который был установлен в моем apache conf. Я просто добавил django.contrib.auth.backends.RemoteUserBackend и мое промежуточное ПО к настройкам, и он отлично работает.

Смежные вопросы