inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티(JWT) 요청 관련 질문있습니다!

24

손원희

작성한 질문수 5

0

안녕하세요! 강의 덕분에 스프링 개발에 잘 입문하게 됐고, 지금은 혼자서 프로젝트를 만들면서 실전에 적용해보고 있습니다!

 

다름이 아니라, JWT로 액세스/리프레시 토큰을 이용한 인증/인가를 구현하기 위해 구글링으로 스프링 시큐리티 관련 자료를 찾아보며 구현을 해나가고 있는데요!

 

필터 단에서 요청을 처리할 때 관련해 선택 장애가 생긴 부분이 있어서, 비록 스프링 시큐리티 관련 강의는 아니지만 관련해서(스프링 시큐리티 강의가 아직 없기도 해서요!) 질문드려보고자 글을 작성합니다!

 

위와 같은 public 컨트롤러 요청 엔드포인트 URL이 있을 때, (스프링 시큐리티 Config에서 .authorizeHttpRequests(auth.requestMatchers.permitAll()로 설정한 URL일 때)

클라이언트가 보낸 HTTP 요청에

위 세 경우 모두 정상적으로 요청을 처리해서 비즈니스 로직 실행 결과 데이터를 응답을 내려주는 게 맞는지, 아니면 public이라도(인증이 필요 없는 요청이라도 = 로그인하지 않아도 되는 요청이라도) 일단 클라이언트가 요청에

위 경우들과 같이 액세스 토큰을 실어 보냈다는 것을 '클라이언트는 명시적으로 인증을 시도했다' 또는 '토큰이 있다는 것은 인증을 위한 것이다'라고 판단해서, public 요청이라도 토큰이 유효하지 않으면 에러 응답(ex. 토큰이 만료됐습니다)을 내려주는 게 맞는지 궁금합니다!

 

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
손원희님, 질문 주셔서 감사합니다!

스프링 시큐리티에서 JWT를 이용한 인증/인가 구현에 대해 고민하고 계시는군요. 언급하신 시나리오에 따라 적절한 처리 방식을 결정하는 것이 중요합니다.

  1. 유효한 액세스 토큰 포함: 이 경우 요청이 정상적으로 처리되어야 하는 것이 맞습니다. 클라이언트가 유효한 인증 정보를 제공했으므로 비즈니스 로직을 수행하고 응답을 보내야 합니다.

  2. 유효하지 않은 액세스 토큰 포함: 명시적으로 인증 시도를 했음에도 불구하고 토큰이 유효하지 않다면, 응답으로 인증 실패를 알리는 것이 일반적인 방법입니다. 이는 클라이언트가 잘못된 인증 정보를 정정할 수 있도록 돕습니다.

  3. 액세스 토큰 생략: permitAll() 설정으로 보호되지 않는 리소스라면, 기본적으로 인증 없이 요청을 허용할 수 있습니다. 따라서 이 경우 일반적으로 요청을 정상 처리합니다. 하지만 특정 시나리오에서는 토큰의 유무를 통해 손님(게스트)와 인증된 사용자 구분 등 추가적인 처리가 필요할 수 있습니다.

결론적으로, 클라이언트가 요청에 JWT를 포함했다면 그것을 인증 시도로 간주하고, 유효하지 않은 경우에는 에러 응답을 주는 것이 일반적입니다. 이는 특히 보안 측면에서 올바른 사용을 유도하는 데 도움을 줄 수 있습니다.

더 자세한 내용은 Spring Security 프로젝트 페이지에서 확인하실 수 있습니다.

질문이 해결되었기를 바랍니다! 추가로 궁금한 사항 있으면 언제든지 말씀해 주세요.

백준 서비스 종료

9

773

1

강의 추천해주세요

2

16

1

[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가

2

59

3

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

52

3