Сохранить имя пользователя и пароль для API в cookie? - PullRequest
1 голос
/ 27 апреля 2011

Я написал веб-приложение, которое взаимодействует с API в другом домене.

Этот API запрашивает имя пользователя и пароль для определенных вызовов (включая POST, например, для загрузки фотографии в API). Для этих вызовов API использует https.

Есть ли способ сохранить имя пользователя и пароль в веб-приложении, чтобы пользователю не приходилось многократно входить в систему при каждой загрузке фотографии?

Вот что я могу придумать:

  1. Очевидный способ - вставить оба файла в файл cookie, но очевидно, что это дыра в безопасности, будь то открытый текст или хешированный.
  2. Если бы это был безопасный веб-сайт, я мог бы использовать идентификатор сеанса: могу ли я убедить владельцев API разрешить идентификаторы сеанса или это было бы невозможно для разных доменов?

Возможно, мне просто нужно попросить пользователя повторно вводить свое имя пользователя и пароль при каждом вызове API.

Спасибо!

1 Ответ

1 голос
/ 27 апреля 2011

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

В этом случае невозможно реализовать это без сохранения какой-либо аутентификационной информации в браузере (cookie, поля формы и т. Д.) Или без того, чтобы ваши пользователи вводили их для каждого запроса. Они должны прийти откуда-то, и ваш сервер не участвует в запросе.

То, что вы можете сделать, это изменить архитектуру и начать играть в человека посередине, как прокси. Вместо того, чтобы просто предоставлять интерфейс, позвольте пользователям отправлять свои запросы в ваше веб-приложение, а не напрямую связываться со службой. Ваше веб-приложение добавляет учетные данные и перенаправляет запрос в службу. Ответ службы будет отправлен в ваше веб-приложение, которое может перенаправить его снова пользователю.

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

Такое изменение, конечно, имеет несколько последствий. Нагрузка на ваше веб-приложение увеличится, и логика станет более сложной. Эти компромиссы должны быть рассмотрены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...