После решения всех проблем, связанных с аутентификацией в моем первом веб-приложении Spring, я застрял с авторизацией.
Настройка с использованием @Secured
аннотаций довольно проста, поэтому я не думаю, что здесь допустил ошибку. Кроме того, я использую Active Directory с помощью провайдера аутентификации LDAP и назначаю роли группам AD, так что это тоже не проблема.
Итак, вот краткое изложение моей проблемы:
- Необеспеченные действия Работа
- Действия с использованием
@Secured("IS_AUTHENTICATED_FULLY")
work
- Действия с использованием чего-то вроде
@Secured("GROUP_*")
не работают
При вызове защищенного действия выбрасывается org.springframework.security.AccessDeniedException
. Вот выдержка из логов:
DEBUG: org.springframework.security.intercept.AbstractSecurityInterceptor - Secure object: ReflectiveMethodInvocation: public org.springframework.web.servlet.ModelAndView de.dillinger.resources.controllers.HostsController.index(); target is of class [de.dillinger.resources.controllers.HostsController]; ConfigAttributes: [GROUP_IT]
DEBUG: org.springframework.security.intercept.AbstractSecurityInterceptor - Previously Authenticated: org.springframework.security.providers.UsernamePasswordAuthenticationToken@2a5333d9: Principal: org.springframework.security.userdetails.ldap.Person@1422384: Username: di32001; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: GROUP_ITS, GROUP_ITS-IT, GROUP_INTERNET, GROUP_SYSTEMGRUPPE, GROUP_IT; Password: [PROTECTED]; Authenticated: true; Details: org.springframework.security.ui.WebAuthenticationDetails@0: RemoteIpAddress: 127.0.0.1; SessionId: 773943FFB14E512872BB6CE25F46C00A; Granted Authorities: GROUP_ITS, GROUP_ITS-IT, GROUP_INTERNET, GROUP_SYSTEMGRUPPE, GROUP_IT
Как видите, для действия требуется роль GROUP_IT
, и мой пользовательский объект имеет эту привилегию. Я действительно не знаю, что вызывает эту проблему.