Безопасность Spring, Конфигурация имеет Проверку полномочий на конечных точках не работает - PullRequest
1 голос
/ 09 мая 2019

У меня есть пружинный привод и конечная точка администрирования для моего веб-приложения.

В настройках моей весенней безопасности у меня есть следующий код:

 .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
}

1 Ответ

1 голос
/ 10 мая 2019

На этот вопрос ответили в комментарии, к сожалению комментатор не отправил ответ, поэтому я делаю это. Все кредиты М. Дейна.

Правильное решение - двигаться

.anyRequest().authenticated()

В последнюю позицию конфигурации httpsecurity. Заказ в этом случае имеет значение.

...