在我的第一个 Spring Web 应用程序中解决了所有与身份验证相关的问题后,我现在陷入了授权问题。
使用@Secured
注释的配置非常简单,所以我认为我在这里没有犯错。此外,我正在使用使用 LDAP 身份验证提供程序的 Active Directory,并按 AD 组分配角色,所以也不是问题。
所以这里是我的问题的简要总结:
- 不安全的操作有效
- 使用
@Secured("IS_AUTHENTICATED_FULLY")
工作的行动 - 使用类似的
@Secured("GROUP_*")
操作不起作用
调用安全操作时org.springframework.security.AccessDeniedException
会抛出 a。以下是日志的摘录:
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
角色,而我的用户对象具有此权限。我真的不知道是什么导致了这个问题。