1

Я работаю над веб-приложением с полным стеком, основанным на весне-java. Приложение в настоящее время разделено между двумя проектами, каждый из которых создает военный файл при сборке. Один из проектов (назовите его UI) служит в качестве внешнего интерфейса приложения. В пользовательском интерфейсе не так много бизнес-логики. В основном HTML-шаблоны, JS/CSS и другие ресурсы. Другой проект (назовите его «Сервер») обладает большим весом с точки зрения предоставления auth, бизнес-логики, служб баз данных, REST API для внешнего мира и т. Д.Получили ли мы эту полную архитектуру webapp стека?

У меня возникает довольно много проблем, особенно при обеспечении безопасности во всем приложении данный проект пользовательского интерфейса не имеет прямого способа аутентификации пользователя или проверки пользовательских ролей и т. д. Пользовательский интерфейс основан на вызове потока паролей REST OAuth2 на сервер для аутентификации. Таким образом, сама аутентификация отлично работает, но я испытываю трудности с проверкой прав доступа пользователей или любых других мелкозернистых разрешений в рамках любого кода в проекте пользовательского интерфейса.

Прежде чем я углубится и постараюсь сделать все это, несколько вопросов для гуру здесь: a) Является ли этот проект одним из приемлемых способов создания веб-приложений? б) Есть ли какие-либо проблемы, о которых я должен знать, если я попытаюсь объединить два проекта в одной войне?

Надеюсь, это точно, но дайте мне знать, если вам нужно больше деталей, и я буду счастлив добавить цвет.

+0

Наш проект использует ту же структуру, и до сих пор у нас не было никаких проблем. Отделив свой бизнес и другую логику от пользовательского интерфейса, действительно правильный путь. Ваша проблема заключается в отсутствии интерфейсов для доступа к функциям «Сервер» в «UI». Для этого вы можете написать специальную библиотеку тегов для использования в ваших шаблонах; или вы можете разделить шаблоны разделов страниц для пользователей, прошедших проверку подлинности и не прошедших проверку подлинности. Я лично рекомендовал бы подход библиотеки тегов, поскольку большинство сторонних инфраструктур безопасности (как Shiro) предоставляют библиотеки тегов для запроса ролей и т. Д. – Abhishek

+0

@Abhishek не уверен, что здесь может помочь библиотека пользовательских тегов. Я хотел бы использовать авторизацию на основе роли в конфигурации весны, используя intercept-url, но не могу этого сделать. Кроме того, уровень метода PreAuthorize не работает либо потому, что пользовательские сеансы создаются без полномочий. Одной из моих ближайших проблем является способ передачи пользовательских ролей из проекта Project в проект UI при аутентификации с использованием OAuth2. – Drago

+0

Не можете ли вы просто получить роли пользователя с сервера и сохранить их в сеансе пользовательского интерфейса? –

ответ

0

Попробуйте другую концепцию разделения:

  • Модуль 1 = бизнес-логика ядро ​​-> производит баночку файл по сборке
  • Модуль 2 = Веб -> производит военный файл по сборке

Модуль 2 зависит от модуля 1. Все материалы безопасности поступают в модуль 2.

Надеюсь, что это поможет.

+0

Спасибо @Maksym. Это звучит логично и разумно. Я буду работать и обновлять здесь, если это будет хорошо для моих нужд. – Drago