로그인 Ajax 처리시 서버 토큰 가져오는 방법
677
작성한 질문수 4
안녕하세요.
Vue + Spring Security 를 이용하여 사이트를 구성하고 있는데요. (csrf 이용)
궁금한게 있어 문의드립니다.
1) Spring Security 토큰이 생성되는 시점이 언제인가요? 로그인 성공 후?
2) 로그인 성공후 ajax 로 토큰을 내려줘야 할꺼 같은데 서버에서 어떻게 내려줘야 할지 모르겠습니다.
3) 로그인 후 접속할때마다 토큰이 계속 바뀌는 건가요? 그렇다고 한다면 접속할때마다 서버에서 토큰값을 내려주는 코드를 모든 api에 넣어줘야 할까요??
답변 3
0
1) Spring Security 토큰이 생성되는 시점이 언제인가요? 로그인 성공 후?
- 토큰을 생성하는 필터인 CsrfFilter 는 매 요청마다 실행되어 토큰 생성 구문을 실행하게 되는데 먼저 세션에 토큰이 존해하는지 확인 후 토큰이 존재할 경우에는 생성하지 않고 존재하지 않을 경우에는 새롭게 생성하게 됩니다.
즉 서버에서 클라이언트로 응답할 때 랜덤으로 생성된 Token을 같이 요청객체에 담아서 전달하게 되고 사용자 세션에 저장합니다. 그리고 사용자가 서버에 작업을 요청할 때 페이지에 Hidden으로 숨어있는 Token 값이 같이 서버로 전송되는데, 서버에서는 이 Token 값이 세션에 저장된 값과 일치하는지 확인하여 일치한다면 접속을 허용하고 이후 요청부터는 세션에 저장된 토큰을 계속 사용하게 됩니다
그리고 새롭게 로그인을 하게 되면 세션에 저장된 토큰을 삭제하고 다시 토큰을 생성한 후 세션에 저장한 후 클라이언트로 발급하게 됩니다.
그리고 위의 과정을 반복하게 됩니다.
2) 로그인 성공후 ajax 로 토큰을 내려줘야 할꺼 같은데 서버에서 어떻게 내려줘야 할지 모르겠습니다.
- 토큰은 CsrfFilter 에서 내부적으로 Request 객체에 담아서 응답으로 보내게 되므로 별도로 클라이언트로 토큰을 보내는 로직을 구현할 필요는 없습니다. 화면단에서 jstl 등의 구문으로 값을 얻어와서 사용하시면 됩니다.
3) 로그인 후 접속할때마다 토큰이 계속 바뀌는 건가요? 그렇다고 한다면 접속할때마다 서버에서 토큰값을 내려주는 코드를 모든 api에 넣어줘야 할까요?
- 위에서 설명한 것 처럼 세션에 저장된 토큰이 삭제될 경우에 새로운 토큰이 발급됩니다.
thymeleaf 나 spring form 태그를 사용한다면 자동적으로 토큰이 설정되기 때문에 일일히 구문을 작성할 필요는 없지만 그 외에 post, put, delete 와 같은 http 메소드 방식을 사용한다면 각 페이지나 api 호출 시 토큰을 설정해서 서버로 전송해야 합니다.
이 부분을 공통화 할 수 있으면 좋습니다.
시큐리티 공부 버전 질문
0
175
1
[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈
0
185
1
AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우
0
174
1
강의 코드가 왜이렇게 뒤죽박죽인가요...
0
249
1
메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..
0
235
1
파라미터값이 넘어가지 않습니다 ....
0
374
1
security filterChain 설정 질문이 있습니다.
0
331
1
소스 부분 질문 드립니다.
0
208
2
섹션4 7번 강의 문제가 있는거 같네요.
0
344
2
파일이 수시로 이름이 바껴있네요 ㄷㄷ
0
304
1
HttpSessionSecurityContextRepository를 사용안하는 문제
0
555
2
error , exception 이 잘 안됩니다.
0
280
2
thymeleaf tag 질문합니다.
0
196
2
버전업하면서 deprecated된 것들이 너무많아요
0
478
1
spring security 패치 관련
0
437
1
모바일을 사용할때 토큰말고 세션
0
845
2
DB 연동한 인가 부분에 대한 질문입니다!
0
264
1
Ajax방식도 똑같이 Session방식을 사용하는건가요?
0
307
1
Config 파일 생성 시 질문이 있습니다.
0
225
1
강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..
1
429
2
403 에러 뜹니다.
0
813
2
login_proc의 존재에 대한 간략한 설명입니다
0
276
1
top.html에 로그인 링크를 만들어서 로그인을 해봤습니다
0
282
2
안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!
0
189
1





