Защищая приложение с помощью OAuth2, я хотел бы предоставить некоторые URL-адреса, доступные любому - PullRequest
0 голосов
/ 12 апреля 2020

После того как я создал небольшое Spring Boot 2.2.6 приложение и настроил AWS Cognito в качестве поставщика аутентификации, все работает хорошо. При доступе к любому из URL-адресов приложения меня перенаправляют на Cognito, и после входа приложение работает нормально.

Я пытаюсь добавить некоторые публичные c страницы (/ api / **), которые не требуют любая аутентификация. Сначала я попробовал это:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/api/**").permitAll();  // This should be permitted for anyone

, но теперь все открыто. Нет безопасности вообще. Упс.

Я изменил его на:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/api/**").permitAll()  // This should be permitted for anyone
                .anyRequest().authenticated();       // Everything else should be protected

Теперь URL-адрес из белого списка (/ api / **) работает хорошо, пароля нет. Но все другие URL (например, / private) вместо перенаправления меня на страницу входа выдают ошибку 403:

Произошла непредвиденная ошибка (type = Forbidden, status = 403). Доступ запрещен

Кто-нибудь знает, как сохранить исходное поведение (пароль), но при этом несколько URL-адресов доступны анонимно?

1 Ответ

2 голосов
/ 12 апреля 2020

У WebSecurityConfigurerAdapter есть другой метод, который можно использовать для игнорирования определенных URL:

@Override
public void configure(WebSecurity web) throws Exception {
     web.ignoring().antMatchers("/api/**");
}
...