Ich verwende Spring Security in meiner Anwendung. Ich authentifiziere APIs basierend auf der Rolle (ADMIN, USER). Es gibt einen API-Endpunkt, auf den ich den Zugriff beschränken möchte, indem ich den Wert einer Variablen verwende, die als Parameter an ihn übergeben wurde.Spring Security mit Wert der Variablen in der Klasse zu authentifizieren
Ich habe
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable().exceptionHandling().authenticationEntryPoint(this.unauthorizedHandler).and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("/api/**").authenticated()
.anyRequest().permitAll();
httpSecurity.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
}
Ich habe einen Anruf
@PostMapping("/something")
public ResponseEntity<BotResponse> handleRequest(@Valid @RequestBody SomeClass someClass) {
// if someClass.getSomeValue() is not present in the User permissions, then it should give an unauthorized response.
return value(someClass);
}
Der Nutzer in Spring Security ist:
public Class User {
String userId;
String userName;
String authorities;
List<String> someList;
//Getters and setters for variables
}
Und die Someclass verwendet wird:
public Class SomeClass {
String someValue;
String userName;
...
// Getters and Setters
}
Wie erlaube ich Benutzern nicht basierend darauf, ob der Wert von someClass.getSomeValue in der someList von User vorhanden ist?