У меня есть пружинный привод и конечная точка администрирования для моего веб-приложения.
В настройках моей весенней безопасности у меня есть следующий код:
.and()
.authorizeRequests()
.antMatchers("/actuator/**", "/administration/**")
.hasAuthority(Authority.ADMIN.name())
Это, похоже, не работает, желаемый результат заключается в том, что только Пользователь с правами администратора может получить доступ к этим конечным точкам, прямо сейчас, любой аутентифицированный пользователь может это сделать. Я сделал это с пользователем, который имеет полномочия пользователя USER, а не администратора, и он работает.
Это слишком опасно для меня, и я не хочу устанавливать защиту паролем, когда этим могут управлять власти.
Итак, как я могу убедиться, что только пользователи с полномочиями ADMIN могут получить доступ к следующим конечным точкам?
Я разместил только этот небольшой фрагмент кода, скажите, требуется ли что-нибудь еще, чтобы вы могли помочь:).
И да, я отладил это, и права доступа в моем процессе установлены правильно, у администратора есть auth admin, и он работает как для базовой auth, так и для oauth2. Кто-нибудь знает, что может происходить?
Только человек, который вообще не вошел в систему, не может получить доступ к этим конечным точкам в данный момент. Вот моя полная конфигурация безопасности:
// @formatter:off
httpSecurity
.authorizeRequests()
.antMatchers(
Utils.MAPPING_INDEX,
Utils.MAPPING_ARTICLE,
Utils.MAPPING_IMAGE,
Utils.MAPPING_ERROR,
Utils.MAPPING_VERIFY_MAIL,
Utils.MAPPING_REGISTER,
Utils.MAPPING_LOGIN,
Utils.MAPPING_LOGIN_ERROR,
Utils.MAPPING_LOGIN_VERIFIED,
Utils.MAPPING_LOGIN_VERIFICATION_ERROR,
Utils.MAPPING_RESET_PASSWORD,
Utils.MAPPING_LOGIN_PASSWORD_RESET_SUCCESS,
Utils.MAPPING_LOGIN_PASSWORD_RESET_LOCKED,
Utils.MAPPING_RESET_PASSWORD_RESET_MAIL_SEND,
Utils.MAPPING_LOGIN_PASSWORD_RESET_FAILURE,
Utils.MAPPING_INDEX_LOGOUT_SUCCESS,
Utils.MAPPING_REGISTER_SUCCESS,
Utils.MAPPING_REGISTER,
Utils.MAPPING_RESET_PASSWORD,
Utils.MAPPING_RESET_PASSWORD_NEW_PASSWORD,
Utils.MAPPING_AUTHOR,
Utils.MAPPING_CONTACT,
Utils.MAPPING_CONTACT_SUCCESS,
Utils.MAPPING_CONTACT_FAILURE,
Utils.MAPPING_REPORT_WORKAROUND,
"/test",
"/test1",
"/frag1",
"/frag2",
"/css/**",
"/js/**",
"/img/**",
"/fonts/**",
"/external/**",
"/favicon.ico",
"/favicon_32.ico",
"/favicon.svg"
).permitAll()
.anyRequest().authenticated()
.and()
.authorizeRequests()
.antMatchers("/actuator/**", "/administration/**")
.hasAuthority(Authority.ADMIN.name())
.and()
.formLogin()
.loginPage(Utils.MAPPING_LOGIN)
.loginProcessingUrl(Utils.MAPPING_LOGIN)
.usernameParameter("email")
.passwordParameter("password")
.successHandler(basicAuthenticationSuccessHandlerImpl)
.failureUrl(Utils.MAPPING_LOGIN_ERROR)
.and()
.logout()
.logoutUrl(Utils.MAPPING_INDEX)
.logoutSuccessUrl(Utils.MAPPING_INDEX_LOGOUT_SUCCESS)
.invalidateHttpSession(true)
.and()
.oauth2Login()
.loginPage(Utils.MAPPING_LOGIN)
.successHandler(oauth2AuthenticationSuccessHandler);
// @formatter:on
}