gpt4 book ai didi

java - Spring security,配置 hasAuthority 检查端点不工作

转载 作者:行者123 更新时间:2023-11-30 10:04:03 25 4
gpt4 key购买 nike

我的 Web 应用程序有 Spring 执行器和管理端点。

在我的 spring 安全配置中,我有以下代码:

 .and()
.authorizeRequests()
.antMatchers("/actuator/**", "/administration/**")
.hasAuthority(Authority.ADMIN.name())

这似乎行不通,期望的结果是只有具有管理员权限的用户才能访问这些端点,现在,任何经过身份验证的用户都可以这样做。我用具有 USER 权限而不是 admin 权限的用户完成了它并且它有效。

这对我来说太危险了,我不想在当局可以管理的情况下设置密码保护。

So how can i make sure that only users with Authority of ADMIN can access the following endpoints ?

我只发布了一小段代码,请告诉我是否需要其他任何东西以便您能够提供帮助:)。

是的,我已经对此进行了调试,我的流程中的权限设置正确,管理员拥有 auth admin,它适用于基本身份验证和 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
}

最佳答案

This question was answered in the comment, unfortunately commenter didnt post answer so i do it. All credit to M. Deinum.

正确的解决方法是移动

.anyRequest().authenticated()

进入httpsecurity配置的最后位置。在这种情况下,顺序很重要。

关于java - Spring security,配置 hasAuthority 检查端点不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com