Ich muss sicherstellen, dass der Benutzer 123 von Mieter 1 nur ihre eigenen Einstellungen herausholen kann. Weder die Einstellungen anderer Benutzer desselben Mieters noch der Einstellungen von Benutzern anderer Mieter.
Code: Select all
@Configuration
@EnableWebSecurity
public class DirectlyConfiguredJwkSetUri {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/contacts/**").access(hasScope("contacts"))
.requestMatchers("/messages/**").access(hasScope("messages"))
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(Customizer.withDefaults())
);
return http.build();
}
}
< /code>
Oder auf der Methodenebene: < /p>
@PreAuthorize("hasAuthority('SCOPE_messages')")
public List getMessages(...) {}
Code: Select all
@PreAuthorize("hasAuthority('TENANT:' + #tenantId) or hasAuthority('ADMIN')")
@GetMapping("{tenantId}/users/{userId}/settings")
public ResponseEntity getTenantResources(@PathVariable long tenantId,
@PathVariable long userId Authentication authentication) {
User user = (User) authentication.getPrincipal();
if (user.getId != userId) {
throw new IdConflicException;
}
// Retrieve and return settings from DB using the userId
}