#python #django #authentication
Вопрос:
Я пытаюсь захватить токен аутентификации у другого аутентификатора службы. Таким образом, у меня есть форма входа в систему, которая обслуживает клиента с двумя вариантами входа: ввести обычный логин или ссылку на вторую службу проверки подлинности, которая перенаправит на определенную страницу формы. Как только пользователь будет подписан, эта вторая служба аутентификации перенаправит его обратно в мое приложение с токеном в качестве параметра.
Я хотел бы включить в свое приложение своего рода прослушиватель (небольшой скрипт), чтобы, когда произойдет это перенаправление, я мог захватить и проверить токен, наконец, аутентифицировать пользователя в локальном приложении django.
Комментарии:
1. Это называется неявным потоком . Вы должны настроить веб-крючок в своем приложении, и, по вашему мнению, вы должны записать параметры запроса, получить маркер авторизации и проверить его. Если все в порядке, перенаправьте на другое представление и сохраните токен в сеансе пользователя. Если нет, прервите запрос и перенаправьте на просмотр входа в систему.
2. Круто @ChihebNexus! Не знал этого имени! Сейчас гораздо лучше искать примеры! Спасибо вам за совет. Я постараюсь это сделать!
3. Мне нужно было бы перехватить запрос к моему приложению с внешнего сервера (в чем я сильно сомневаюсь, как это сделать в django, промежуточном программном обеспечении, javascript в интерфейсе?), потому что это не происходит автоматически. Мое приложение прослушивает 8000 портов. Сразу после аутентификации по этой внешней ссылке происходит перенаправление на приложение, например myapp.com/?token=XXXX. Я просто запутался в трафике за пределами двух серверов и в правильном способе его реализации в системе django ecossystem
Ответ №1:
Я просто нашел простое решение, так как искал автоматическую запись запроса. Таким образом, учитывая, что внешний сервер аутентификации перенаправляет на предварительно сформированный URL-адрес сразу после аутентификации, этот URL-адрес может быть записан в моем приложении localhost путем редактирования /etc/hosts
И nginx.conf
(как предлагается здесь), а не только один или другой. Итак, первый:
127.0.0.1 url-redirect-by-external-server.com
и nginx.conf
я добавил в файл новые server
свойства:
...
server {
listen 80;
listen 443;
server_name url-redirect-by-external-server.com;
location / {
proxy_pass http://127.0.0.1:8000/myapp/exact-name-of-the-method-in-view-to-handle-the-request/;
}
}
...
Дело в том, что когда запрос выполняется внешним сервером, приложение все равно не захватывает. Когда я нажимаю Enter
на URL-адрес, все работает нормально. Все еще не понимал, что нужно установить.