![](/img/trans.png)
[英]Spring boot + Swagger UI how to tell endpoint to require bearer token
[英]Bearer token required for a public endpoint with axios
Using Vue.js I am trying to implement a JWT login form in a RESTful API with Spring Boot, but unless I add the bearer token to the request, all I get is a 403 status. 我已將端點設置為無需任何許可即可訪問,並且在 postman 上,無需授權 header 即可發送請求。 這是我在 Spring 上的安全配置的一部分:
.antMatchers(HttpMethod.POST, "/auth/login")
.permitAll()
這是我發出 POST 請求的 vue.js 服務:
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()
我想做到這一點,因此不需要令牌即可訪問您請求相同令牌的部分......有什么辦法嗎?
我不是 100% 確定,但您的 403 似乎很可能是由 CSRF 保護引起的。 查看JWT 登錄示例,了解如何在服務器上啟用 JWT 身份驗證的示例。
總之,如果啟用 HTTP basic ( .httpBasic()
) 並禁用 session 管理 ( .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
),您還可以禁用 CSRF ( .csrf().disable()
這將是實現您想要做的事情的推薦方法,因為無狀態服務器(就 session 管理而言)不易受到 CSRF 保護的影響。
您還可以實現自己的身份驗證端點,這是您的示例,在這種情況下,您不需要啟用.httpBasic()
。 在這種情況下,您可以只使用.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
。 查看這個Tanzu 星期二的談話,了解有關 JWT 身份驗證的更多信息(為什么以及為什么不)。
重要的是要指出,服務器上的任何形式的 session 都會使您容易受到 CSRF 攻擊,因此確保沒有JSESSIONID
或類似的東西會影響瀏覽器是很重要的。 看到這個問題和其他幾個類似的問題,因為類似的問題以前經常被問到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.