Как получить токены доступа OAuth в общедоступном приложении javascript без входа в систему пользователя? - PullRequest
0 голосов
/ 18 октября 2018

Я разрабатываю приложение JavaScript, которое должно взаимодействовать с API, защищенным с помощью OAuth.Тем не менее, у пользователей этого приложения JavaScript нет учетных записей - они являются анонимными посетителями общедоступного веб-сайта.Данные в API открыты для публичного доступа, но они все еще защищены OAuth2.

Я изучил все доступные типы грантов в моем распоряжении , и ни один из них не имеет смысла в этом сценарии.

Вид «имплицитного» гранта кажется подходящим для использования в приложениях JavaScript, но он также предполагает, что посетитель сайта является владельцем ресурса, а процесс получения токена требует от них «одобрения» доступа кРесурсы.Это не сработает, потому что нет учетной записи пользователя, в которую они будут входить на сервере идентификации.

Я считаю, что у меня есть следующие варианты:

  1. Вывести клиентИдентификатор и секрет непосредственно на странице, и JavaScript используют тип предоставления client_credentials для получения токена.Очевидно, что любой мог бы поцарапать это и использовать его вне приложения ... но в любом случае это общедоступные данные

  2. Пусть веб-сервер получит новый токен для каждого посетителя страницы через тип предоставления client_credentials,Получив токен, он выгружает его в тело страницы, чтобы приложение JavaScript могло использовать его при выполнении запросов API.Это скрывает идентификатор клиента и секрет от JavaScript, но заставляет веб-сервер служить, казалось бы, бессмысленным промежуточным ПО для доступа к API.Кто-то может также просто соскоблить токен со страницы ... но в любом случае это общедоступные данные.

  3. Полное удаление защиты OAuth с конечных точек (не уверен, возможно ли это даже с помощью WSO2 API Manager).Это открытые данные.

Я что-то пропускаю?

1 Ответ

0 голосов
/ 22 октября 2018

Полное удаление защиты OAuth с конечных точек (не уверен, возможно ли это даже с помощью WSO2 API Manager).Это общедоступные данные.

Да, для публичного доступа это вполне осуществимый вариант.Вы можете настроить отсутствие авторизации для ресурсов API, и токен OAuth не потребуется.Как недостаток - вы не получите никакой статистики об этом.

Выведите идентификатор клиента и секрет прямо на страницу ... но в любом случае это общедоступные данные

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

Пусть веб-сервер получит новый токен для каждого посетителя страницы через тип предоставления client_credentials.

При наличии одного и того же приложения APIM WSO2 будет возвращать один и тот же токен для того же приложения, пока токен не истек.Хотя технически это правильный подход при наличии авторизованных данных OAuth с учетными данными клиента.

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