簡體   English   中英

如何從 Postman rest 客戶端發送 spring csrf 令牌?

[英]How do I send spring csrf token from Postman rest client?

我在 spring 框架中有csrf 保護 因此,在每個請求中,我從 ajax 調用中發送 header 中的 csrf 令牌,這非常有效。

<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

在 ajax

beforeSend: function(xhr) {
                xhr.setRequestHeader(header, token),
                xhr.setRequestHeader("username", "xxxx1"),
                xhr.setRequestHeader("password", "password")
            }

我不知道生成 csrf 令牌並包含在 Postman Rest 客戶端的 header 部分中 你能幫我從 Postman Rest 客戶端發送 csrf 令牌嗎?在此處輸入圖像描述

最簡單的方法可以始終如一地執行此操作,因此您不必每次都獲取令牌:

注意:您需要安裝PostMan Interceptor並將其激活以訪問瀏覽器cookie

  1. 創建一個新環境,以便存儲環境變量

在此輸入圖像描述

  1. 創建一個帶有測試的登錄方法,將XSRF cookie存儲在環境變量中,在測試選項卡中發布此代碼

     //Replace XSFR-TOKEN with your cookie name var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN"); postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value); 

編輯對於使用5.5.2郵遞員或更高版本的任何人,您還必須解碼cookie,他們還提供了獲取cookie的替代方法,因為@Sacapuces指出

pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

現在,您將擁有一個帶有xsrf-token的環境變量。

  1. 保存您的登錄方式

  2. 創建要創建的新帖子,並在標題中添加XSRF-Token-Header Key,並在句柄欄中添加環境變量以訪問它{{}}

在此輸入圖像描述

  1. 現在,在運行新請求之前,請確保運行登錄,它將存儲環境變量,然后當您運行實際請求時,它將自動附加它。

我可以通過以下步驟發送帶有csrf令牌的REST:

  1. 登錄時,Spring安全性會自動生成CSRF令牌。它將顯示在響應頭中。

  2. 通過在標頭上設置帶有CSRF令牌的X-CSRF-TOKEN,可以在后續請求中使用CSRF令牌。

首先,您需要安裝PostMan Interceptor並激活它以訪問瀏覽器cookie。

  1. 您必須通過發出GET請求來獲取CSRF令牌:標題:“XSRF-TOKEN”和值:“獲取”

  2. 你應該在cookie選項卡中看到令牌並且可以復制它(注意:你可以配置spring如何命名cookie。也許你的cookie有另一個名字而不是“XSRF-TOKEN”。注意:你有刪除這個空白的字符在來自換行符的令牌)

  3. 現在制作你的POST請求並將標題設置為:標題:“X-XSRF-TOKEN”和值:“你復制的令牌沒有空格”

對我而言,工作變量是將X-CSRF-TOKEN添加到標題中。 在此輸入圖像描述

如果您不想配置環境變量等,這是最快的解決方案

https://stackoverflow.com/a/49249850/3705478

請將X-CSRF-Token作為密鑰和FETCH作為GET請求頭中的值,您將在響應頭中收到令牌

我使用 csrfTokenRepository() 允許 spring 安全生成 csrf 令牌

@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter{
    @Override
    protected void configure(HttpSecurity http) throws Exception {
    // TODO Auto-generated method stub
    http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
    // your code
    } 
}

添加這幾行代碼后,使用GET請求生成csrf token。 我使用了 postman 並且在響應 cookies 部分中獲得了令牌。 復制令牌並在 POST 調用中使用它。

官方文檔鏈接: https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/csrf.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM