À l'aide de Vue.js, j'essaie d'implémenter un formulaire de connexion JWT dans une API RESTful à l'aide de Spring Boot, mais à moins que j'ajoute le jeton du porteur à la demande, tout ce que j'obtiens est un statut 403. J'ai configuré le point de terminaison pour qu'il soit accessible sans aucune autorisation et sur Postman, la demande peut être envoyée sans l'en-tête d'autorisation. Cela fait partie de ma configuration de sécurité sur Spring :
.antMatchers(HttpMethod.POST, "/auth/login") .permitAll()
C'est mon service vue.js qui fait la requête POST :
import axios from 'axios' let USER_API_BASE_URL = 'http://localhost:8080/auth/login/' let config = { headers: { 'Content-Type': 'application/json', 'Authorization': "Bearer (hereGoesTheToken)" }} class LoginService{ postLogin(emailInput, passwordInput){ let user = JSON.stringify({email: emailInput, password: passwordInput}); var response = axios.post(USER_API_BASE_URL, user, config); console.log(response) return response } } export default new LoginService()
Je veux faire en sorte qu'aucun jeton ne soit nécessaire pour accéder à la partie où vous avez demandé le même jeton... Existe-t-il un moyen de faire cela ?
Je ne suis pas sûr à 100 %, mais votre 403 est très probablement causé par une protection CSRF. Consultez Exemple de connexion JWT pour un exemple de la façon d'activer l'authentification JWT sur votre serveur.
Pour résumer, si vous activez HTTP basic (
.httpBasic()
)并禁用会话管理(.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
),您还可以禁用CSRF (.csrf() .disable()
). Ce serait la méthode recommandée pour réaliser ce que vous voulez faire, car les serveurs sans état (en termes de gestion de session) sont moins sensibles à la protection CSRF.Vous pouvez également implémenter votre propre point de terminaison d'authentification, voici votre exemple, auquel cas vous n'avez pas besoin de l'activer
.httpBasic()
。在这种情况下,您可以使用.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
. Découvrez cette Tanzu Tuesday talk pour en savoir plus sur l'authentification JWT (pourquoi et pourquoi pas).Il est important de souligner que toute forme de session sur le serveur vous rend vulnérable aux attaques CSRF, il est donc important de s'assurer que
JSESSIONID
ou un contenu similaire n'arrive pas dans le navigateur. Veuillez consulter cette question et plusieurs autres questions similaires, car des questions similaires ont été fréquemment posées auparavant.