Pergunta

Depois de resolver todos autenticação problemas relacionados em minha primeira aplicação Primavera web agora estou preso com autorização.

Configuração usando anotações @Secured é bem simples, então eu não acho que eu cometi um erro aqui. Além disso Eu estou usando um Active Directory usando o provedor de autenticação LDAP e papéis atribuir por grupos de anúncios, por isso não é um problema.

Então aqui está um resumo breve do meu problema:

  • acções inseguros trabalho
  • Ações usando @Secured("IS_AUTHENTICATED_FULLY") trabalho
  • Ações usando algo como @Secured("GROUP_*") não funcionam

Ao chamar uma ação garantido um org.springframework.security.AccessDeniedException é lançada. Aqui está um trecho dos registros:

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

Como você pode ver a ação requer o papel GROUP_IT e meu objeto de usuário tem este privilégio. Eu realmente não sei o que está causando esse problema.

Foi útil?

Solução

Você está usando org.springframework.security.access.vote.UnanimousBased O papel do eleitor? Tente mudá-lo para org.springframework.security.access.vote.AffirmativeBased .
Este tipo de problemas estão relacionados à configuração de papel eleitor.

Editar 1 (exemplo adicionados):

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top