Используя Spring Security 5.2.X (последняя версия в настоящее время), мне нужно запретить доступ к сторонней роли для всех методов, кроме одного в службе SOAP. Другими словами, мне нужна эта конкретная роль, чтобы иметь доступ только к одному конкретному методу из всех доступных в сервисе.
Обычно обычная секьюризация на уровне метода состоит из аннотации с @Secure("MY_ROLE")
. Это делает метод доступным только для этой роли.
Можно ли сказать Spring Security Core сделать обратное. Т.е. настройте его так, чтобы определенный пользователь имел доступ только к защищенному методу.
Конечно, обходной путь может быть таким:
// Method accessible by anyone but third party role
@Secured({"GOOD_ROLE1", "GOOD_ROLE2", "GOOD_ROLE3"})
public void methodAccessibleByAnyoneButThirdPartyRole(){
}
// Method accessible by anyone, including third party role
@Secured({"GOOD_ROLE1", "GOOD_ROLE2", "GOOD_ROLE3", "THIRD_PARTY_ROLE"})
public void methodAccessibleByAnyone(){
}
Другой обходной путь может состоять из простого создания новогообслуживание только с методом, который будет ограничен.
Но есть ли вариант аннотации, чтобы получить тот же сразу? Что-то вроде @PreAuthorize("!hasRole('THIRD_PARTY_ROLE')")
или подобное?