У меня есть существующее приложение Django (D), с которым я хотел бы подключиться к PHP-приложению (P на другом сервере) для аутентификации. То есть пользователи регистрируются в D, который вызывает службу на P для проверки своего пароля. Им также потребуется получить локальную учетную запись пользователя, сохраняя в них свойства в D. Фактические требования к безопасности очень низки. Для D очень сложно напрямую обращаться к базе данных P.Внедрить API проверки подлинности в PHP
Никогда не реализовав никакой аутентификации, я имел в виду что-то вроде этого:
- D: Сбор имя пользователя и пароль, вычислите хэш (используя тот же алгоритм, что и P)
- D: Вызов веб-службы (HTTP) на P, передавая имя пользователя и хэш
- P: Посмотрите имя пользователя, если оно не существует.
- P: Если это так, проверьте сохраненный хэш против прошедшего хэша, если он отличается от другого.
- P: Если нормально, вернуть некоторую другую информацию о пользователе (например, полное имя, некоторые предметно-конкретные вещи), в противном случае несрабатывания возвратного
- D: Если нормально, создавать/обновлять запись пользователя
- D: Если нормально, то зарегистрировать их в
Итак, несколько вопросов:.
- Является ли такой подход разумным? Какие атаки он уязвим (информировать клиента ...)?
- Что вы называете функциональностью, добавляемой в P: поставщик аутентификации?
- Есть ли более стандартный способ делать это, используя стандартные протоколы или, по крайней мере, имена вызовов веб-сервисов?
- Является ли шаг 6 разумным подходом? Есть ли недостаток в синхронизации баз данных пользователей таким образом?
Является ли сервер, на котором установлено приложение Django, в той же локальной сети, что и приложение PHP, или вы проверяете подлинность через Интернет? –
Такая же локальная сеть (в том же учреждении, во всяком случае). –