Java + Spring Boot + REST секретный вопрос - PullRequest
0 голосов
/ 27 октября 2019

Я новичок в Java. Я создаю REST API с использованием Spring Boot + OAuth2-аутентификация + Swagger.

Я бы хотел, чтобы на странице swagger был разрешен анонимный доступ, а конечной точке / token / oauth требуется базовая аутентификация.

Для моих контроллеров я настроен на использование @PreAuthorize, обычно с # oauth2.hasScope ('xxx'). Я хотел бы ПОТЕНЦИАЛЬНО иметь методы get, которые разрешают анонимные GET в том же контроллере, что и заблокированные методы.

Итак ... то, что я сделал в ResourceServerConfig, имеет строку:

http.authorizeRequests().antMatchers("/*").permitAll();

В общем, все разрешено, и тогда @PreAuthorize переопределяет все, что я хочу защитить.

Я бы лучше определил, какие методы заблокированы в контроллерах с помощью PreAuthorize, а затем поддерживал бы гигантский сопоставитель муравьев. список анонимных путей. Мне кажется чище.

Это все работает, как и ожидалось. Любой метод, который НЕ имеет @PreAuthorize, открыт, а методы, которые НЕ имеют @PreAuthorize, требуют аутентификации.

Есть ли что-нибудь опасное в ("/ *"). AllowAll ()? Поскольку я новичок в Java, я не уверен, что это открывает какие-то дыры? Похоже, что есть некоторые «скрытые» конечные точки, так как мне пришлось добавить фильтр в конфигурацию swagger: RequestHandlerSelectors.basePackage («org.xxx.yyy»), чтобы показывать только мои действительные API.

Просто пытаюсь понять любойПоследствия.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Вы не должны использовать ("/ *"). AllowAll (), поскольку оно всегда имеет значение true. Пример, "denyAll" будет запрещать доступ ко всем соответствующим сообщениям;«allowAll» предоставит доступ ко всем сопоставлениям, поэтому не будет никакой необходимости реализовывать безопасность, если вы разрешите All.

0 голосов
/ 27 октября 2019

@ SledgeHammer, вместо того, чтобы держать его открытым "/", обрабатывайте его в контроллере, чтобы перенаправить куда-либо, и вместо того, чтобы держать "/" для allowAll, поэтому примените его к определенному шаблону URL.

...