2009-09-18 3 views
0

내 첫 번째 Spring 웹 애플리케이션에서 authentication related problems을 모두 풀어봤을 때 나는 이제 인증에 박혀있다.@Secured throws AccessDeniedException 역할이 정확하다.

@Secured 주석을 사용하는 설정은 매우 간단하므로 여기에서 실수를했다고 생각하지 않습니다. 또한 LDAP 인증 공급자를 사용하는 Active Directory를 사용하고 AD 그룹별로 역할을 할당하므로 문제가되지 않습니다.

그래서 여기 내 문제에 대한 간략한 요약이다 : @Secured("GROUP_*")같은 것을 사용

  • 작업이 작동하지 않습니다

    • 보안되지 않은 행동 작업
    • 작업 @Secured("IS_AUTHENTICATED_FULLY")작업을 사용하여

    보안 조치를 호출하면 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.springf[email protected]2a5333d9: Principal: [email protected]: 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: [email protected]: RemoteIpAddress: 127.0.0.1; SessionId: 773943FFB14E512872BB6CE25F46C00A; Granted Authorities: GROUP_ITS, GROUP_ITS-IT, GROUP_INTERNET, GROUP_SYSTEMGRUPPE, GROUP_IT 
    

    당신이 조치가 GROUP_IT 역할이 필요합니다 내 사용자 개체가이 권한을 가지고 볼 수 있듯이. 나는이 문제의 원인을 정확히 알지 못한다.

  • 답변

    2

    org.springframework.security.access.vote.UnanimousBased 역할 투표자가 있습니까? 이를 org.springframework.security.access.vote.AffirmativeBased으로 변경하십시오.
    이런 종류의 문제는 역할 투표자 구성과 관련됩니다.

    편집 한 (예를 들어 추가) :

    <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> 
    
    +0

    이'를 사용하여 LDAP 인증을 구성 할 때 필요한 유권자 콩인가'? LDAP 샘플에는 LDAP 샘플이 없습니다. 내가 다시 일할 때 이것을 확인해 보겠습니다. – Koraktor

    +0

    유권자는 승인을 위해 필요합니다. – rodrigoap

    +0

    설명과 예제 코드를 이용해 주셔서 감사합니다. 나는 내일 이것을 점검 할 것이다. – Koraktor