HTTP базовая аутентификация в javascript, jquery или django? - PullRequest
1 голос
/ 17 марта 2012

Я занимаюсь разработкой веб-приложения (A), которое служит «внешним интерфейсом» для другого веб-сайта (B), для которого требуется базовая HTTP-аутентификация (т. Е. Та, которая появляется и запрашивает имя пользователя и пароль).

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

Используя javascript / jquery или некоторый код Django, возможно ли превентивно аутентифицировать этого пользователя за кулисами, например, когда он входит в A?Нужно просто отправить запрос на некоторый ресурс в B с именем пользователя и паролем, поэтому

Спасибо, надеюсь, этот вопрос понятен.

Ответы [ 3 ]

3 голосов
/ 17 марта 2012

jQuery ajax () метод поддерживает HTTP-аутентификацию с параметрами "username" и "password".

jQuery.ajax () manual :

Ifсервер выполняет HTTP-аутентификацию перед предоставлением ответа, пара имени пользователя и пароля может быть отправлена ​​через опции имени пользователя и пароля.

B.VB.:

Нужно просто отправить запрос на какой-то ресурс в B с именем пользователя и паролем

Я не тестировал, но этоопределенно стоит попробовать.Вероятно, до тех пор, пока сервер авторизует клиента, он не должен снова запрашивать учетные данные, поэтому стоит попробовать.

2 голосов
/ 17 марта 2012

Полагаю, вы можете вставить это прямо в URL.

http://user:pass@server.domain.tld/dir/file.ext

2 голосов
/ 17 марта 2012

Краткий ответ: вы, вероятно, не сможете сделать это, не внедрив общий механизм аутентификации / совместного использования токенов и т. Д., Который включает в себя бэкэнд B.

Поскольку B, вероятно, имеет другое происхождение, Политика одинакового происхождения не позволит вам сделать запрос к B со страницы, которая обслуживается из A.

Если вы можете изменить бэкэнд B, вы можете сделать запрос JSONP (т. Е. Не обычную аутентификацию через заголовки HTTP) на B со страницы на A, когда пользователь входит в систему A.

Также см. http://en.wikipedia.org/wiki/Single_sign-on для вдохновения для различных решений.

...