Вход в Spring Security работает локально, но не на рабочем сайте. - PullRequest
0 голосов
/ 01 марта 2019

Мое приложение структурировано с помощью Java и Spring Security.У меня есть два способа входа в систему, один из которых - вход в Windows (активная директория), другой - пароль, созданный администратором.Оба из них работают, когда я запускаю локально через IntelliJ, но когда я развертываю приложение на сервере, оно позволяет только тем пользователям, которые используют учетные данные для входа в Windows, войти в систему.обновляет страницу входа и удаляет введенные имя пользователя и пароль.Я не получаю никаких ошибок.Кроме того, когда пользователь admin создает пользовательский вход в систему, он сохраняется в таблице sql с хэшированным паролем.Таким образом, функция создания работает / пользователь существует, просто вход в систему не работает.Любая идея, что может быть причиной ... Не уверен, если я должен смотреть на код или соединение с сервером.Я использую Tomcat и IIS для размещения этого сайта.

Файл веб-конфигурации

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
   @Value("${ad.hg.url}")
    private String AD_HG_URL;

    @Value("${ad.hp.nt.url}")
    private String AD_HP_NT_URL;

    @Autowired
    DBAuthorizationFetcher dbAuthorizationFetcher;

    @Autowired
    ManualUserDetailsService manualUserDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/specialSplit/**");

        http.authorizeRequests()
                .antMatchers("/css/**","/js/**","/images/**","/login","/accessDenied","/loginFailed","/changePassword","/resetPassword").permitAll()
                .antMatchers("/newClient","/callLogs/**","/addClient","/saveClient","/delete/**","/save/**","/specialSplit/**").hasRole("OLIDB_ADMIN")
                .antMatchers("/admin","/toggle/user/**").hasRole("USER_ADMIN")
                .anyRequest().hasRole("OLIDB_USER").and()
                .formLogin().loginPage("/login").failureHandler(new CustomAuthenticationFailureHandler()).successForwardUrl("/")
                .and().exceptionHandling().accessDeniedPage("/accessDenied")
                .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/");
    }
    @Override
    protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
        //authManagerBuilder.authenticationProvider(databaseAuthenticationProvider);
        authManagerBuilder.authenticationProvider(activeDirectoryLdapAuthenticationProvider("HEFFGROUP.COM",AD_HP_NT_URL));
        authManagerBuilder.authenticationProvider(activeDirectoryLdapAuthenticationProvider("HG",AD_HG_URL));
        authManagerBuilder.authenticationProvider(manualAuthenticationProvider());
    }

    public AuthenticationProvider activeDirectoryLdapAuthenticationProvider(String domain,String url) {
        ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(domain, url);
        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);
        provider.setUserDetailsContextMapper(dbAuthorizationFetcher);
        return provider;
    }

    public DaoAuthenticationProvider manualAuthenticationProvider() {
        DaoAuthenticationProvider authProvider
                = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(manualUserDetailsService);
        authProvider.setPasswordEncoder(new BCryptPasswordEncoder(11));
        return authProvider;
    }
}
...