Есть ли способ получить ненулевой принципал / аутентификацию, используя Spring Security с анонимным доступом? - PullRequest
0 голосов
/ 06 февраля 2020

Я использую Spring Security и хочу иметь возможность работать с «локальным» профилем с отключенной защитой. Я могу сделать это, используя управляемый профилем WebSecurityConfigurerAdapter, который разрешает анонимный доступ, но проблема в том, что любые Principal или Authentication аргументы методов контроллера равны нулю.

Способ, который я решил это прежде, чем передать аргументы через адаптер, который имеет нелокальную сквозную реализацию и реализацию «локального» профиля, которая заменяет сконфигурированное значение:

    @GetMapping()
    public ResponseEntity<List<Thing>> getThings(Principal principal) {

        Principal myPrincipal = securityAdapter.principal(principal);

        ...
    }

Но это кажется действительно неуклюжим. Есть ли способ настроить Spring Security для замены, чтобы я мог сохранить код в чистоте?

1 Ответ

0 голосов
/ 07 февраля 2020

К сожалению, это SpringSecurity функция : AnonymousAuthenticationToken не внедряется в методы контроллера. Я мог бы найти некоторые ссылки для этого в этом выпуске .

Возможный обходной путь (из вышеупомянутой проблемы) состоит в том, чтобы внедрить пользовательский решатель доверия, который притворяется, что AnonymousAuthenticationToken не является анонимным ...

@Bean
public AuthenticationTrustResolver trustResolver() {
    return new AuthenticationTrustResolver() {

        @Override
        public boolean isRememberMe(final Authentication authentication) {
            return false;
        }

        @Override
        public boolean isAnonymous(final Authentication authentication) {
            return false;
        }
    };
}

Довольно уродливо, но поскольку он предназначен для запуска в профиле, где ожидается, что анонимная аутентификация будет действительной, этого может быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...