source

포스트맨 레스트 클라이언트에서 스프링 csrf 토큰을 보내려면 어떻게 해야 합니까?

goodcode 2023. 8. 24. 22:36
반응형

포스트맨 레스트 클라이언트에서 스프링 csrf 토큰을 보내려면 어떻게 해야 합니까?

스프링 프레임워크에 csrf 보호 기능이 있습니다.그래서 각각의 요청에서 나는 완벽하게 작동하는 아약스 호출에서 헤더로 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");

아약스에서

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

저는 csrf 토큰을 생성하고 포스트맨 Rest Client의 헤더 섹션에 포함시킬 생각이 전혀 없습니까?포스트맨 Rest Client에서 csrf 토큰을 보내는 것을 도와주시겠습니까?enter image description here

이를 일관되게 수행하는 가장 쉬운 방법은 매번 토큰을 얻을 필요가 없습니다.

참고: 브라우저 쿠키에 액세스하려면 PostMan Interceptor를 설치하고 활성화해야 합니다.

  1. 환경 변수를 저장할 수 있도록 새 환경 생성

enter image description here

  1. XSRF 쿠키를 환경 변수에 저장하는 테스트를 사용하여 로그인 방법을 만듭니다. 테스트 탭에서 이 코드를 게시합니다.

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

편집 5.5.2 우체부 이상을 사용하는 모든 사람을 위해 쿠키를 디코딩해야 하며, @Sacapues가 지적하는 것처럼 쿠키를 얻을 수 있는 대체 방법도 제공했습니다.

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

이제 xsrf-token이 포함된 환경 변수가 있습니다.

  1. 로그인 방법 저장

  2. 생성할 새 게시물을 만들고 머리글에 XSRF-Token-Header Key 및 이에 액세스할 수 있는 핸들 바에 환경 변수를 추가합니다{}.

enter image description here

  1. 이제 새 요청을 실행하기 전에 로그인을 실행하면 환경 변수가 저장되고 실제 요청을 실행하면 자동으로 추가됩니다.

아래의 절차에 따라 csrf 토큰으로 REST를 보낼 수 있습니다.

  1. 로그인 시 스프링 보안에 의해 자동으로 생성되는 CSRF 토큰.응답 헤더에 표시됩니다.

  2. CSRF 토큰은 헤더에 CSRF 토큰이 있는 X-CSRF-TOKEN을 설정하여 후속 요청에 사용할 수 있습니다.

먼저 브라우저 쿠키에 액세스하려면 PostMan Interceptor를 설치하고 활성화해야 합니다.

  1. GET 요청을 수행하여 CSRF 토큰을 가져와야 합니다.헤더: "XSRF-TOKEN" 및 값: "Fetch"

  2. 쿠키 탭에 토큰이 표시되고 복사할 수 있습니다(참고:쿠키의 이름을 지정하는 방법을 봄으로 구성할 수 있습니다.쿠키에 "XSRF-TOKEN"이 아닌 다른 이름이 있을 수 있습니다.주의:새 행에서 토큰의 빈 문자를 제거합니다.)

  3. 이제 POST 요청을 하고 헤더를 "X-XSRF-TOKEN"으로 설정하고 값을 "공백이 없는 복사된 토큰"으로 설정합니다.

나의 경우 헤더에 X-CSRF-TOKEN을 추가하는 변형 작업을 합니다.

X-CSRF-Token을 키로 입력하고 FETCH를 GET 요청 헤더에 값으로 입력하면 응답 헤더에 토큰이 수신됩니다.

환경 변수 등을 구성하지 않으려는 경우.여기 가장 빠른 해결책이 있습니다.

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

봄 보안에서 csrf 토큰을 생성할 수 있도록 csrfTokenRepository()를 사용했습니다.

@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 토큰을 생성합니다.저는 우체부를 이용했고 응답 쿠키 섹션에서 토큰을 받았습니다.토큰을 복사하여 POST 통화에 사용합니다.

공식 문서 링크: https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/csrf.html

언급URL : https://stackoverflow.com/questions/27182701/how-do-i-send-spring-csrf-token-from-postman-rest-client

반응형