@Secured создает AccessDeniedException, хотя роли верны - PullRequest
0 голосов
/ 18 сентября 2009

После решения всех проблем, связанных с аутентификацией в моем первом веб-приложении 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, и мой пользовательский объект имеет эту привилегию. Я действительно не знаю, что вызывает эту проблему.

1 Ответ

2 голосов
/ 18 сентября 2009

Используете ли вы 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...