2012-06-09 3 views
0

Я хочу реализовать базовую услугу RESTful с помощью Tomcat. Перед использованием API требуется авторизация. Разрешение будет достигнуто путем запроса расходной «ресурса» напримерШаблоны Java EE: авторизация и реализация RESTful

some.domain.com/rest/accounts?user=ABC&password=XYZ 

Если учетные данные действительны, соответствующий ресурс счета будет перенастроен в формате JSON или пустой ответ типа 403 будет возвращен. После авторизации выполняется, клиент может затем получить доступ к API (например):

some.domain.com/rest/secure/bookings 
some.domain.com/rest/secure/friends 

Однако я чувствую себя потерял все варианты осуществления. Я знаю, что хочу использовать Spring, но Джексон кажется проще и проще возвращать объекты JSON.

Вопросы:

  1. Должен ли я реализовать Spring Controller, даже если класс, который использует Джексон вид контроллера тоже? Или, если я использую Джексона, нет необходимости в контроллере Sping?

  2. Должна ли аутентификация выполняться с использованием Spring-Security, фильтров Tomcat или AOP с пружиной?

Кажется, существует так много способов сделать что-то, но мой приоритет - сохранить все просто.

+0

Возможно, наиболее подверженный мозгу способ выполнить аутентификацию, которую я когда-либо видел. Аутентификация ** не ** относится к REST API, но к базовой платформе/серверу с Basic, Digest, Negotiate и т. Д. –

+0

не говоря уже о недостатке безопасности, который отправляет такую ​​конфиденциальную информацию в URL-адрес. – ssedano

ответ

2

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

+0

Из ответов затем Spring Security для авторизации. Спасибо. Но как насчет использования Джексона и роли контролеров. Использует ли Джексон необходимость в явном контроллере Spring? – Jack

+0

Вы должны были создать два отдельных вопроса. Spring Sec будет делать как Authn, так и Authz. Джексон не имеет ничего общего с контроллерами. Вы не понимали цели Джексона. Все это ist сериализует JSON для Java взад и вперед. –

+0

Извините, я имел в виду Джерси, а не Джексона. – Jack

0

Jackson - сериализация JSON; Я не вижу, что это касается аутентификации/авторизации.

Если вы уже используете Spring, Spring Security является естественным.

Есть еще одна точка зрения: сохраните ее просто. Базовый auth и база данных с именами пользователей и зашифрованными, солеными паролями не составит труда написать. Единственный DAO, и вы хороши.

Да, аутентификация/авторизация являются сквозными проблемами. Ответ на вопрос о том, где лучше всего это сделать, зависит от того, где вы должны применять и потреблять его. Для фильтров Tomcat требуется HTTP. Вы будете проходить проверку подлинности на уровне контроллера или службы? Или оба? Как насчет авторизации на основе ролей? Это может быть сложно.

+0

Это не так. Я просто спрашивал, нормально ли использовать Джексон с весной, когда Spring может выполнять сериализацию JSON. Джексону кажется проще в использовании, но он чувствует себя странно, используя другую библиотеку, когда Spring тоже может это сделать. – Jack

+0

Весна не делает сериализации JSON. Spring просто использует lib, как Jackson, JAXB или XStream. –

+0

Это мое плохое. Я имею в виду Джерси, а не Джексона! – Jack

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