2015-10-14 15 views
6

Tôi có một ứng dụng web mùa xuân với tính năng bảo vệ CSRF được bật. Tôi có thể truy cập dịch vụ RESTful qua các cuộc gọi AJAX, nhưng khi tôi đang truy cập dịch vụ với các ứng dụng khác như httpurlconnection, tôi nhận được lỗi 401 (mã thông báo CSRF null).Làm cách nào để xử lý bảo vệ CSRF bằng dịch vụ web Spring RESTful?

Tôi hiểu rằng để truy cập dịch vụ RESTful, tôi cần chuyển mã thông báo trong tiêu đề yêu cầu, nhưng làm cách nào để nhận mã thông báo CSRF?

Trả lời

10

Bạn có thể tạo một ánh xạ trong Spring MVC mà được CSRF token:

@RequestMapping(value="/csrf-token", method=RequestMethod.GET) 
public @ResponseBody String getCsrfToken(HttpServletRequest request) { 
    CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName()); 
    return token.getToken(); 
} 
+0

tôi thêm này để mùa xuân của tôi back-end và tôi có thể geta CSRF-token. Bây giờ câu hỏi là ... làm cách nào để chuyển lại cho dịch vụ web Spring POST/PUT của tôi? Tôi không muốn làm cho phần dữ liệu JSON của tôi gửi lại. Tôi rất vui khi đặt mã thông báo trong tiêu đề hoặc như một phần của cookie trong yêu cầu. – tjholmes66

+1

@ tjholmes66 Bạn có thể gửi mã thông báo trong tiêu đề có tên 'X-CSRF-TOKEN'. – holmis83

+0

Đúng. Cảm ơn. Tôi đã tìm ra nó ngay bây giờ. Cảm ơn! – tjholmes66

Các vấn đề liên quan