Соответствующий поток OAuth2 для клиента JavaScript API

#javascript #api #oauth

#javascript #API #oauth

Вопрос:

Читая последний черновик OAuth2, я не уверен, какой поток подходит для клиента, который я разрабатываю, и подходит ли OAuth вообще. Данные, передаваемые из нашего API, не являются специфичными для пользователя; наличие учетных данных просто предоставляет пользователю доступ к нашим данным.

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

В настоящее время я просто добавляю Authorization заголовок с базовыми учетными данными HTTP, что плохо по многим причинам. Самое главное, что любой мог очень легко извлечь имя пользователя и пароль.

Наиболее близкое соответствие, которое я вижу в черновике OAuth для этого сценария, — это неявное предоставление авторизации, но все равно кажется, что человек, управляющий агентом пользователя (веб-браузер), должен был бы взаимодействовать со страницей, чтобы получить токен доступа. Необходимость, скажем, нажимать кнопку, а затем возвращаться к серверу аутентификации, а затем обратно к JS-клиенту (через redirect_uri ) не подходит.

С другой стороны, не имея возможности использовать закрытый ключ (потому что это JS), я не могу представить, как клиент мог быть проверен без использования redirect_uri .

Может кто-нибудь разъяснить мне?

Комментарии:

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

Ответ №1:

Токен доступа передается вашему redirect_uri во фрагменте URL. Вы можете получить его, проанализировав окно.Расположение.значение хэша.

С другой стороны, не имея возможности использовать закрытый ключ (потому что это JS), я не могу представить, как клиент мог быть проверен без использования redirect_uri .

Неявный тип предоставления НЕ аутентифицирует клиента. В некоторых случаях идентификатор клиента может быть проверен с помощью redirct_uri, используемого для доставки токена доступа клиенту. Он зависит от присутствия владельца ресурса (его учетных данных) и регистрации URI перенаправления. в этом потоке требуется redirect_uri. Некоторые SDK говорят, что это «необязательно», потому что у них есть конфигурация по умолчанию, которая обычно является тем же доменом, где находится служба API, или она предварительно настроена у поставщика ресурсов.