如何解决使用Okta授权代码流+ PKCE时,是否可以使用spring的方法级别安全性?
我正在尝试使用Okta安全性来设置SpringBoot应用程序。该应用程序是在Okta中使用OIDC单页应用程序(使用授权代码流+ PKCE)配置的,因此我们没有可用的客户机密。我希望能够像@PreAuthorize一样在我的Web服务代码中使用方法级别的安全性,但是无论我做什么,它似乎都不起作用。使用PKCE时甚至可以使用方法级别的安全性,还是仅使用HttpSecurity级别?我只是错过了SpringSecurity这个难题中的重要部分吗?任何帮助将不胜感激。
下面是我的代码。
application.yml
okta:
oauth2:
issuer: <my-issuer>
audience: api://default
client-id: <my-client-id>
scopes: <my-scopes>
SecurityConfig.java
@EnableOAuth2Client
@Profile("okta")
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private ClientRegistrationRepository clientRegistrationRepository;
public OktaSecurityConfig(ClientRegistrationRepository clientRegistrationRepository){
this.clientRegistrationRepository = clientRegistrationRepository;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors()
.and()
.oauth2Login()
.authorizationEndpoint()
.authorizationRequestResolver(
new CustomAuthorizationRequestResolver(
clientRegistrationRepository,DEFAULT_AUTHORIZATION_REQUEST_BASE_URI
)
);
Okta.configureResourceServer401ResponseBody(http);
}
}
控制器
@RestController
@CrossOrigin(origins = {"http://localhost:8080","http://localhost:4200"})
@RequestMapping("/api/myController")
public class MyController {
private StuffStatusDao stuffStatusDao;
@PreAuthorize("hasAuthority('readonly')")
public ResponseEntity<List<Stuff>> getStuffStatus() {
return ResponseEntity.ok(stuffStatusDao.getLabelStatus());
{
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。