HTTP-аутентификация jQuery - PullRequest
       2

HTTP-аутентификация jQuery

7 голосов
/ 07 января 2011

С jQuery я звоню Version One Rest API и мне нужно аутентифицировать пользователя в заголовке HTTP.

Я пытался

$.ajax({
        dataType: "jsonp",
        beforeSend: function(xhr){
            xhr.setRequestHeader("Authorization", "Basic xyz"); // xyz usr:pwd Base64 encoded
        },
        url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
        success: function(data, status, xhr) {
            alert("Load was performed.");
        }
    });

и

$.ajax({
    dataType: "jsonp",
    username:"usr",
    password:"pwd",
    url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
    success: function(data, status, xhr) {
        alert("Load was performed.");
    }
});

Но у меня всегда появляется всплывающее окно с просьбой ввести мои учетные данные (я использую Chrome).Даже когда я набираю учетные данные во всплывающем окне, я не аутентифицируюсь, и окно продолжает отображаться.

  1. Как аутентифицировать пользователя с помощью jQuery в заголовках HTTP?
  2. Есть ли способ, каксделать атрибут пароля зашифрованным невидимым?Или Base64 - единственный выход.Я хочу получить доступ к серверу только через одну учетную запись, но не хочу, чтобы пользователи на стороне клиента видели пароль (или находили его в javascripts).

1 Ответ

4 голосов
/ 07 января 2011

Это не совсем невозможно, просто немного неловко. Вы можете проксировать все AJAX через свой собственный сервер, например:

  • Ваш JavaScript связывается с вашим сервером через AJAX.
  • Ваш сервер устанавливает запрос на https://www10.v1host.com/.../VersionOne/rest-1.v1/... с соответствующими базовыми заголовками аутентификации (или любой другой аутентификацией, которую вам нужно использовать).
  • Ваш сервер отправляет ответ обратно в ваш скрипт точно так же, как www10.v1host.com отправил его на ваш сервер.

Таким образом, пароль остается невидимым и находится под вашим контролем на сервере, и клиентский код получает тот же API, что и в www10.v1host.com. При таком подходе может быть небольшое отставание, но это должно быть управляемым.

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

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

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