Рубрики
Без рубрики

Использование пользовательских брендов аутентификации в Django

Если вы работаете в организации с установленной линейкой продуктов, которая обслуживает живые пользователи, поддерживая новый сайт с Django, вероятно, означает интеграцию с существующей системой аутентификации. Теги с Джанго, Python, учебником, производительностью.

Учебники Django на блоге Kite (4 части серии)

Многие организации используют широко принятые системы аутентификации, предоставленные услугами, такими как Google, Facebook или Github. Несколько пакетов Python предоставляют интеграцию аутентификации с этими услугами, но большинство из них ожидают, что вы будете обращаться с окончательными учетными записями пользователей на Django. Что происходит, когда вам нужно работать с учетными записями пользователей, которые живут в другой системе в целом?

В этой статье вы увидите интерфейс, который Django обнаруживает для аутентификации к внешней системе. К концу вы должны понимать куски, связанные с отображением информации внешней системы в родной Пользователь объекты для того, чтобы работать с ними на вашем собственном сайте.

Аутентификация по умолчанию Django

В Система аутентификации пользователя Django Мы рассмотрели основы того, как работает аутентификация по умолчанию в Django. В конечном итоге вы можете взаимодействовать с Пользователь объекты и понять, если пользователь IS_Authententify или нет. Используя систему аутентификации по умолчанию, вы можете воспользоваться многими встроенными функциями Django, таких как его просмотр входа в систему и выхода из системы и рабочий процесс сброса паролей.

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

Аутентификация бэкэндов

Как и во многих системах Django, аутентификация моделируется как система плагинов. Django попытается аутентифицировать пользователей через ряд бэкэндов аутентификации. Backend по умолчанию проверяет имя пользователя и пароль пользователя против всех существующих Пользователь объекты в базе данных для аутентификации их. Аутентификация_backends. Установка – это ваша входная точка, чтобы перехватить этот рабочий процесс и точку Django к вашей внешней системе.

Backend аутентификации – это класс, который, минимально, реализует два метода:

  • get_user (user_id) – А user_id Может быть любой уникальный идентификатор, который ваша внешняя система использует для различения пользователей, а get_user Возвращает либо объект пользователя, соответствующую данному user_id или Нет Отказ
  • аутентифицировать (запрос, ** учетные данные)Запрос Является ли текущий запрос HTTP, а аргументы ключевых слов учетных данных являются любыми учетными данными, которые ваша внешняя система должна проверять, должен ли пользователь аутентифицировать или нет. Это часто имя пользователя и пароль, но это может быть токен API или другой схемой. аутентифицировать Возвращает аутентифицированную Пользователь объект или Нет Отказ

Внутри вашего метода аутентификации Backenc.

Используя чудесные Да или нет? API, вы можете построить бэкэнд аутентификации, который иногда аутентифицирует пользователя, если API позволяет:

import requests

class FickleAuthBackend:
    def authenticate(self, request, username):
        response = requests.get(
            'https://yesno.wtf/api/'
        ).json()
        return User(username=username, password='') if response['answer'] == 'yes' else None

В то время как аутентифицировать может вернуть объект пользователя или Нет , это может также вернуть Anonymouser объект или поднять Разрешение по разрешению четко остановить любую дальнейшую проверку аутентификации. Это позволяет различные способы продолжить, а анонимные пользователи все еще могут иметь определенные разрешения. Вы захотите объяснить это на промежуточных программах и представлениях.

Если внешнее пользовательское обслуживание предоставляет дополнительную информацию о пользователе, get_user может быть хорошим местом, чтобы схватить некоторые из этих данных. Вы можете добавить атрибуты пользователю объекта в аутентифицировать Прежде чем вернуть его, если вы хотите, но будьте осторожны с тем, сколько атрибутов вы добавляете динамически.

Разрешения

Я также покрыл схему разрешений Django в системе аутентификации пользователя Django: при предоставлении пользователя вы можете узнать об их разрешениях, как правило, или против определенных объектов, использующих HAS_PERM метод. Пользовательские бэкэнды аутентификации могут переопределить методы проверки разрешений и Django проведут напротив тем, прежде чем отступить к проверкам по умолчанию. Это позволяет сделать запросы к вашей внешней системе о разрешениях в дополнение к аутентификации:

Продолжить с разрешениями Смотрите код и больше учебных пособий Django по данному!

Дейн-Хиллард имеет предстоящую книгу «Практики Python Pro» в этом месяце (октябрь 2019 г.)

Учебники Django на блоге Kite (4 части серии)

Оригинал: “https://dev.to/kite/using-custom-authentication-backends-in-django-32pn”