Ограничить доступ к ресурсам RESTful - PullRequest
3 голосов
/ 27 июля 2011

При разработке REST API для приложения некоторые службы должны быть общедоступными, в то время как другие службы предпочтительнее, чтобы они оставались частными (то есть не общедоступными). OAuth используется приложением-службой.

Какие меры необходимо принять во внимание?

Некоторые идеи на уме:

  1. Публикация частных ресурсов под запутанным URI.
  2. Требуются специальные ключи доступа. (быть известным только авторизованным клиентам).

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

Любые ресурсы, которые должны быть защищены и ограничены определенным сегментом вашей аудитории, должны иметь соответствующие средства управления доступом (в основном то, о чем вы говорите в пункте 2). В качестве руководства обратитесь к API успешных сервисов, таких как Twitter, и вы всегда найдете подключенный токен.

Запутывание никогда не приемлемо - это просто защита через мрак и в корне ошибочна. Хорошего чтения части OWASP Top 10, неспособность ограничить доступ к URL . Те же правила применяются к любым ресурсам, независимо от того, являются ли они RESTful или нет.

0 голосов
/ 28 июля 2011

Самым масштабируемым способом является разработка URL-адресов таким образом, чтобы посреднику было тривиально узнать, какие ресурсы доступны для всех, а какие - только для конкретных пользователей.

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

Разделение интересов и все такое.

Пример:

Неаутентифицированные запросы могут достигать:

/myapi/public

Запрос аутентификации с именем пользователя "joe" также может достигать:

/myapi/personal/joe

401 Несанкционированный:

/myapi/personal/anything_but_joe 

Убедитесь, что / myapi / personal / otheruser и / myapi / personal / nonexistentuser возвращают неразличимые ответы.

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