Spring Rest API в обход аутентификации

У меня есть модуль с именем «abc», который имеет функцию безопасности для аутентификации пользователя.

и имя пользователя и пароль аутентифицируются на сервере ldap

<authentication-manager alias="authenticationManager" erase-credentials="false">
<authentication-provider ref="preAuthenticatedLdapAuthenticationProvider" />

<ldap-server id="ldapServerIDGreenBus" url="${ldap.URL}/${ldap.Base}"
    manager-dn="${ldap.Username}" manager-password="${ldap.Password}" />

Я перехватываю шаблон URL для всех пользователей, у которых есть какая-либо роль.

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

Поэтому я попробовал две вещи

1.<intercept-url pattern="/forgotPassword" access="permitAll"/>

Результат: Ошибка, потому что PermitAll выполняет аутентификацию, но разрешает все шаблоны при условии, что они должны иметь объект аутентификации (имя пользователя и пароль).

2. <http pattern="/forgotPassword" security="none" />

Результат: Ошибка и проверка в почтальоне, и это показало это

securityAuthError


person Kramer    schedule 17.05.2018    source источник


Ответы (1)


Вы также можете определить разрешения в файле SecurityConfig с помощью переопределяемого метода «configure». Я бы попробовал что-то вроде этого. Ниже я добавил соответствующий URL-адрес forgotPassword.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.authenticationProvider(authProvider);
}

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests() 
            .antMatchers("/forgotPassword/**").permitAll()
            .antMatchers("/**").hasRole("USER") 
            .anyRequest().authenticated()
            .and()          
        .formLogin()
            .loginPage("/login")
            .successForwardUrl("/loginSuccess")
            .failureUrl("/loginError")
            .permitAll()                
            .and()
        .logout()
            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
}

}
person Adam    schedule 17.05.2018
comment
нет никакой разницы между ‹intercept-url pattern=/forgotPassword access=permitAll/› и тем, что вы сделали ???? - person Kramer; 21.05.2018
comment
Пожалуйста, ответьте в альтернативной конфигурации xml, так как я настроил в этом... - person Kramer; 21.05.2018
comment
Существует разница в самом шаблоне URL. - person Adam; 21.05.2018
comment
Я заменил свой URL-адрес на /forgotPassword/** в соответствующем xml, но все еще не работает - person Kramer; 22.05.2018
comment
Я использовал перехват /forgotPassword после /** (это определено ролью), поэтому переопределение - person Kramer; 31.05.2018