2016-01-25 4 views
0

У меня есть два отдельных веб-приложений:REST API: клиент агента пользователя на основе (приложение) авторизации

  • базы данных API
  • и основные веб-клиент (колба) с некоторыми JS-кода (Knockout. JS) для интерактивных функций, таких как фильтрация продуктов «на лету», корзина и т.д.

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

Я читал о HMAC и Oauth. Ключевой момент: сервер и клиент используют один и тот же секрет, который используется для генерации HMAC, например.

Но как я могу создать HMAC внутри браузера пользователя, используя секрет и не раскрывая секрет другим? Насколько я понимаю, если у моего JS-кода есть доступ к тайне, чем кто-либо в Интернете имеет такой доступ, верно?

+0

вы можете использовать https для защиты данных – Jeremy

+0

Хорошо, используя HTTPS Я защищаю связь между клиентом и сервером. Но клиент все равно должен отправить некоторые учетные данные. И мой клиент - это JS-код, доступный для всех. Итак, что доступно моему клиентскому приложению, доступно всем, не так ли? – hsrv

+0

yes right, но вы можете использовать закрытый ключ для каждого клиента, использовать контрольную сумму для целостности данных и т. Д. – Jeremy

ответ

1

Приложения для JavaScript - это то, что называется 'public clients' в OAuth 2.0. Это в основном означает, что они не могут хранить секреты, и поэтому вы не можете не использовать авторизацию клиента (приложения).

Итак, если вы используете приложение JavaScript, чтобы поговорить с вашим API, вам необходимо выполнить аутентификацию пользователя и предоставить пользователям доступ к вашему API. Или переключитесь на приложение на стороне сервера, чтобы получить доступ к вашему API.

+0

Есть ли способ ограничить доступ к js-файлу? Я видел такую ​​вещь в Интернете, когда обнаружил одно веб-приложение, из тега у меня появилась ссылка на нечто вроде 'catalog.js', которое доступно самому сайту, но когда вы пытаетесь получить доступ к ссылке - это 0-длинный файл содержимого. – hsrv

+0

Не знаете, что там произошло, но если браузер может получить файл, вы должны использовать ту же аутентификацию, что и браузер. Откройте инструменты разработчика F12, и на вкладке «Сеть» вы увидите, какой запрос делает браузер, и ответ, который отправляет сервер. – MvdD

Смежные вопросы