Субъект имеет значение null в сервисе /oauth/authorize (http-сообщение в ApprovOrDeny) после подтверждения потока утверждения oauth2

Я использую страницу утверждения весенней безопасности oauth2, которая, когда я разрешаю запрос, отправляется как «сообщение» в «/oauth/authorize» (метод ApprovOrDeny из класса AuthorizationEndpoint), однако один из параметров этой службы равен нулю, который будет «главным».

Страница Spring oauth, когда я нажимаю на авторизацию (https://i.imgur.com/rJvCUo9.jpg )

Кто-нибудь знает, почему этот параметр (основной принцип) равен нулю?

Это метод spring, который имеет основной нуль

    public View approveOrDeny(@RequestParam Map<String, String> approvalParameters, Map<String, ?> model,
            SessionStatus sessionStatus, Principal principal) {

        if (!(principal instanceof Authentication)) {
            sessionStatus.setComplete();
            throw new InsufficientAuthenticationException(
                    "User must be authenticated with Spring Security before authorizing an access token.");
        }

         ...
         ...


person georgecro    schedule 18.10.2019    source источник


Ответы (1)


Я обнаружил проблему, у меня был класс, который расширял DefaultRedirectResolver, и в переопределенном методе resolveRedirect я вызывал SecurityContextHolder.clearContext().

Просто удалите SecurityContextHolder.clearContext(), и принципал будет заполнен.

person georgecro    schedule 22.10.2019