Тестирование весенней безопасности разрешено API с помощью почтальона - PullRequest
0 голосов
/ 19 июня 2019

Я работаю над приложением Spring Boot + Spring Security. Я использовал jdbcAuthentication для проверки пользователя. Я также настроил пользовательскую форму входа в систему.

После запуска приложения я могу успешно войти в систему и получить ответ API через браузер, но когда я пытаюсь протестировать API с помощью Почтальона, я получаю только страницу входа в HTML в качестве ответа. Как получить желаемый ответ API JSON?

Мой файл конфигурации:

@Override
            protected void configure(AuthenticationManagerBuilder auth)
                    throws Exception {
            System.out.println("auth manager called");
              auth. jdbcAuthentication() .usersByUsernameQuery(usersQuery)
              .authoritiesByUsernameQuery(rolesQuery) .dataSource(dataSource)
              .passwordEncoder(noop);

            }
         @Override
            protected void configure(HttpSecurity http) throws Exception {
                System.out.println("Http scurity called");
                http.httpBasic().
                and().
                        authorizeRequests()
                        .antMatchers("/").permitAll()
                        .antMatchers("/login").permitAll()
                        .antMatchers("/registration").permitAll()
                        .antMatchers("/admin/**").hasAuthority("ADMIN")
                        .antMatchers("/db").hasAuthority("DBA")
                        .antMatchers("/user").hasAuthority("USER").anyRequest()
                        .authenticated().and().csrf().disable().formLogin()
                        .loginPage("/login").failureUrl("/login?error=true")
                        .successHandler(customSuccessHandler)
                        .usernameParameter("username")
                        .passwordParameter("password")
                        .and().logout()
                        .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                        .logoutSuccessUrl("/").and().exceptionHandling()
                        .accessDeniedPage("/access-denied");
            }

Файл моего контроллера:

@RequestMapping(value = { "/", "/login" }, method = RequestMethod.GET)
        public ModelAndView login() {
            System.out.println("/login called");
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("login");
            return modelAndView;
        }

        @RequestMapping(value = "/admin", method = RequestMethod.GET, produces = { "application/json" })
            public UserUniconnect home(HttpServletRequest request, HttpServletResponse response) {

                Authentication auth = SecurityContextHolder.getContext().getAuthentication();
                String currentUser = null;
                if (!(auth instanceof AnonymousAuthenticationToken)) {
                    currentUser = auth.getName();
                }

                User user1 = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
                user1.getAuthorities();
                System.out.println("++++++++++++++++++++++++++++++");
                System.out.println(request == null);
                Users u = (Users) request.getSession(false).getAttribute("user");
                Uniconnect uni = (Uniconnect) request.getSession(false).getAttribute("uniconnect");
                UserUniconnect uu = new UserUniconnect();
                uu.setUser(u);
                uu.setUniconnect(uni);

                return uu;
            }

Я возвращаю объект java в качестве ответа, который весенний загрузчик может преобразовать в формат json.

Скриншот почтальона

1 Ответ

0 голосов
/ 19 июня 2019

Настройка параметров базовой аутентификации в Postman может помочь: Basic Auth settings in Postman

Скорее всего, вам необходимо получить идентификатор сеанса из файла cookie после входа в систему вручную с помощьюбраузер, а затем отправьте этот cookie-файл Почтальону так:

JSESSIONID cookie

Получение файла cookie из браузера зависит от самого браузера, но Chrome и Firefox обавстроенные утилиты разработчика, так что это не должно быть проблемой.

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