У вас есть доступ к объекту аутентификации с помощью SPEL, поэтому такие выражения, как:
authentication.token.claims ['primary_username'] == ......
Я использовал это в методах: например,
PreAuthorize("#createSupportQueryRequest.username == authentication.token.claims['preferred_username']")
public void createNewQuery(@RequestBody CreateSupportQueryRequest createSupportQueryRequest) {
Но он также должен работать в методе .access.
Для более сложных вещей вы можете ссылаться на класс bean-компонента, который находится в вашем контексте, в выражениях, используя @ . например,
.access("@isPortfolioOwnerOrAdmin.check()")
Это вызовет метод проверки в классе IsPortfolioOwnerOrAdmin.
Ваш класс bean-компонента имеет доступ к токену через SecurityConect, и вы можете выполнить сложную проверку logi c там и вернуть либо истину, либо ложь.