этот код работает:
import com.example.myAuthServer.service.CustomUserDetailsService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final CustomUserDetailsService customUserDetailsService;
private final AuthConfigProperties authConfigProperties;
public WebSecurityConfig(@Lazy CustomUserDetailsService customUserDetailsService, AuthConfigProperties authConfigProperties) {
this.customUserDetailsService = customUserDetailsService;
this.authConfigProperties = authConfigProperties;
}
@Bean
@Override
public AuthenticationManager authenticationManager() throws Exception {
return super.authenticationManager();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(authConfigProperties.getBcryptRounds());
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.requestMatchers()
.antMatchers("/login", "/logout", "/oauth/authorize")
.and()
.logout()
.deleteCookies("JSESSIONID")
.permitAll()
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.csrf()
.disable();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService).passwordEncoder(passwordEncoder());
}
}
, но для того, чтобы получить красный цвет ошибки, показанной в исходном сообщении, вам просто нужно, чтобы браузер знал, что запрошенный URL-адрес сервера имеет то же самое "РазрешитьURL ответа Control-Access-Origin ".
Мы можем сделать это, применив прокси на стороне клиента. В моем случае я использую реагирование.
добавьте файл с именем setupProxy.js вsrc directory.
, затем напишите следующий код:
const proxy = require("http-proxy-middleware");
module.exports = function (app) {
app.use(proxy("/oauth/token", {target: "http://localhost:8089"})); // put your host and api
};
и используйте его так:
fetch("/oauth/token", {
method: "POST",
body: qs.stringify(Auth.bodyForNewToken(username, password)),
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: "Basic " + btoa("<CLIENT>:<SECRET>")
}
});
этот код просто подсказка, ВЫНУЖНО ИЗМЕНИТЬ НЕОБХОДИМЫЕ ЛИНИИ !!!.