Rumah  >  Soal Jawab  >  teks badan

Spring Authorization Server 1.0.0: ralat javascript apabila meminta /oauth2/token

<p>Saya telah mencipta Pelayan Kebenaran Musim Bunga - anda boleh mencari kod di github https://github.com/costerutilo/UTILO-Authorization-Server</p> <p>Saya tidak boleh membaca token melalui JavaScript. Saya mencipta aplikasi web Vue mudah untuk mendapatkan kod kebenaran pelanggan, tetapi saya tidak boleh mendapatkan token. </p> <p>Cuba gunakan API pengambilan: </p> <pre class="brush:php;toolbar:false;">const url = 'http://127.0.0.1:9000/oauth2/token'; var kelayakan = btoa(import.meta.env.VITE_CLIENT_ID + ':' + 'rahsia'); var basicAuth = 'Asas' + bukti kelayakan; var myHeaders = new Headers(); //myHeaders.append("Kebenaran", "Asas dXRpbG8tY2xpZW50OnNlY3JldA=="); myHeaders.append("Kebenaran", basicAuth); myHeaders.append("Content-Type", "application/x-www-form-urlencoded"); var urlencoded = URLSearchParams baharu(); urlencoded.append("jenis_pemberian", "kod_kebenaran"); // urlencoded.append("code", "yyJTTI3JqNno1XlSW59qxX3CCytMm-ChoHnqVw3iSUGyT6ltT_tpPclQ8bdSyeApO4IWE442irBiRwntJJzae9BIntpCj3hnb hTqavqsy"); urlencoded.append("kod", kod); urlencoded.append("redirect_uri", "https://www.utilo.eu"); var requestOptions = { kaedah: 'POST', tajuk: myHeaders, badan: urlencoded, ubah hala: 'ikuti' }; fetch(url, requestOptions) .then(respon => response.text()) .then(hasil => console.log(hasil)) .catch(error => console.log('error', error));</pre> <p>Dalam konsol javascript penyemak imbas, saya melihat pengecualian CORS</p> <pre class="brush:php;toolbar:false;">Akses untuk diambil di 'http://127.0.0.1:9000/oauth2/token' daripada asal 'http://127.0.0.1:9010' mempunyai telah disekat oleh dasar CORS: Respons kepada permintaan prapenerbangan tidak lulus semakan kawalan akses</pra> <p>Konsol pelayan memberikan ralat: </p> <pre class="brush:php;toolbar:false;">2023-02-27T09:35:53.786+01:00 TRACE 33212 --- [nio-9000-exec-3] o.s.s.w.a.ExceptionTranslationFilter : Menghantar AnonymousAuthentic Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] ke titik masuk pengesahan pengesahan kerana akses dinyahdayakan org.springframework.security.access.AccessDeniedException: Akses Ditolak</pre> <p>Jika saya mencuba permintaan yang sama dalam Posmen, saya mendapat JSON dengan token.</p> <p>Saya tidak tahu apakah kesilapan penaakulan saya atau kesalahan yang saya lakukan. </p>
P粉314915922P粉314915922410 hari yang lalu545

membalas semua(1)saya akan balas

  • P粉792026467

    P粉7920264672023-09-05 13:35:43

    Anda memerlukan untuk mendayakan CORS untuk rantai penapis Spring Security anda @Bean dan menyediakan seperti contoh ini :

    @Configuration
    public class CorsConfig {
    
        @Bean
        public CorsConfigurationSource corsConfigurationSource() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            CorsConfiguration config = new CorsConfiguration();
            config.addAllowedHeader("*");
            config.addAllowedMethod("*");
            config.addAllowedOrigin("http://127.0.0.1:4200");
            config.setAllowCredentials(true);
            source.registerCorsConfiguration("/**", config);
            return source;
        }
    
    }
    
    Nota: 4200Port

    adalah untuk persekitaran pembangunan Sudut, gantikannya dengan port pelayan pembangunan Vue anda. 🎜

    balas
    0
  • Batalbalas