Domanda

Dopo aver risolto tutti i problemi relativi all'autenticazione in in la mia prima applicazione web di Spring ora sono bloccata con l'autorizzazione.

La configurazione usando le annotazioni @Secured è piuttosto semplice, quindi non credo di aver fatto un errore qui. Inoltre sto usando un Active Directory usando il provider di autenticazione LDAP e assegnando ruoli ai gruppi di AD, quindi non è un problema.

Quindi ecco un breve riassunto del mio problema:

  • Azioni non protette work
  • Azioni usando @Secured (" IS_AUTHENTICATED_FULLY ") work
  • Azioni che utilizzano qualcosa come @Secured (" GROUP _ * ") non funzionano

Quando si chiama un'azione protetta viene lanciato un org.springframework.security.AccessDeniedException . Ecco un estratto dai registri:

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

Come puoi vedere, l'azione richiede il ruolo GROUP_IT e il mio oggetto utente ha questo privilegio. Non so davvero cosa stia causando questo problema.

È stato utile?

Soluzione

Stai usando org.springframework.security.access.vote.UnanimousBased ? Prova a cambiarlo in org.springframework.security.access.vote.AffirmativeBased .
Questo tipo di problemi è legato alla configurazione dell'elettore di ruolo.

Modifica 1 (esempio aggiunto):

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top