@Secured выдает исключение AccessDeniedException, хотя роли верны

StackOverflow https://stackoverflow.com/questions/1443632

Вопрос

После решения всех проблемы, связанные с аутентификацией в моем первом веб-приложении Spring я застрял с авторизацией.

Конфигурация с помощью @Secured аннотации довольно просты, поэтому я не думаю, что допустил здесь ошибку.Кроме того, я использую Active Directory с использованием поставщика аутентификации LDAP и назначаю роли по группам AD, так что это тоже не проблема.

Итак, вкратце о моей проблеме:

  • Незащищенные действия работа
  • Действия с использованием @Secured("IS_AUTHENTICATED_FULLY") работа
  • Действия с использованием чего-то вроде @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 роль, и мой объект пользователя имеет эту привилегию.Я действительно не знаю, что вызывает эту проблему.

Это было полезно?

Решение

Ты используешь org.springframework.security.access.vote.UnanimousBased роль избирателя?Попробуйте изменить его на org.springframework.security.access.vote.AffirmativeBased.
Проблемы такого рода связаны с ролевой конфигурацией избирателей.

Изменить 1 (добавлен пример):

<security:global-method-security 
    secured-annotations="enabled"  
    access-decision-manager-ref="accessDecisionManager"
/>
<bean 
    id="accessDecisionManager" 
    class="org.springframework.security.access.vote.AffirmativeBased">
    <property name="allowIfAllAbstainDecisions" value="false" />
    <property name="decisionVoters">
        <list>
            <bean id="roleVoter" class="org.springframework.security.access.vote.RoleVoter" />
        </list>
    </property>
 </bean>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top