2017-02-14 20 views
-1

Я пишу веб-сервис JAVA REST, я пытаюсь понять, как все это работает, но мне удалось сделать простые методы, когда мой клиент отправит JSON с информацией, а сервер что-то сделает с этим. Очень просто.REST SECURE SECRET KEY

Так что я делаю: мой клиент хочет создать новый объект, например, учетную запись, но я не хочу, чтобы все в мире просто отправляли json на мой сайт и создавали объект. Однако я не хочу фильтровать IP-адреса, потому что я понятия не имею, кто или что будет использовать мое клиентское приложение.

Итак, что я сделал, чтобы не допустить, чтобы все просто отправляли данные? Я создал секретный ключ для игроков, и они используют это нравится: http://[website]/[Applicationname]/Webresources/[SECRETKEY]/create (Отправить JSON с просьбой)

Это работает, так как в настоящее время только люди с SecretKey могут создавать, и они получат только секретный ключ, если я дам это им. Я уверен, что они не будут давать этот секретный ключ другим, потому что, если они это сделают, они только прикручиваются, их службы получат массу поддельных данных ... Но я хочу, чтобы он был более безопасным, поэтому никто может получить ключ независимо от того, что, и я не знаю, будет ли HTTPS также скрывать параметры домена +, я думаю, нет, не так ли?

Так что мой вопрос: как я могу отправить секретный ключ, без кого-либо, КОГДА-ЛИБО, чтобы узнать, что такое секретный ключ?

+0

Не изобретать велосипед плохо. Поиск, как сделать OAUTH2 –

+0

Я ничего не делаю: P Я сделал это так, потому что я не знал другого пути, но спасибо, я загляну в OAUTH2! – runefist

ответ

2

Использование HTTPS, отправка запросов POST, для которых вы указываете данные секретного ключа в теле. Вы должны указать Тип контента как «x-www-form-urlencoded». Содержимое должно быть закодировано, а противники, которые перехватывают URL, не смогут расшифровать тело.

Однако ваша реализация довольно небезопасна для отправки каждого запроса с использованием секретного ключа в пути URL-адреса, поскольку любой противник, перехватывающий вызов REST, будет знать секретный ключ, просто просматривая URL-адрес. Это сложнее и дольше реализовать, но если вы можете сделать услугу авторизации Basic Auth или OAuth, она разрешит только определенным пользователям с действительными токенами, выпущенными им для доступа к службе, что является общим способом обеспечения безопасности ваших служб REST.

+1

Действительно, стандарты, такие как OAuth, Basic, Digest, являются самым простым и безопасным способом. Кроме того, каждая инфраструктура WS/REST (CXF, Spring, Axis, ..) имеет возможность реализовать параметр аутентификации/авторизации, попытаться использовать уже реализованные параметры – gusto2

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

  • Нет связанных вопросов^_^