• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

어세스토큰 발급과 관련해서 질문합니다

24.04.09 17:25 작성 조회수 70

0

안녕하세여, 관련하여 수업을 듣고있던중 저희쪽 소스에서는 인증토큰을 발행해

Tokenstore 에 저장해서 사용하고있습니다 . 다만 토큰 만료시간이 되지않으면 로그아웃 처리를 하여도(프런트에서 로컬스토리지 제거만 해주고있음) 다시 그 토큰을 재사용 할수있게됩니다 .

이를 위해토큰 재사용을 막기위해 고민하고있는데요. 혹시 어떤식으로 구현하면 좋을지 조언 부탁드립니다. (토큰스토어에 저장된 토큰을 어떻게 꺼내오고 블랙리스트 목록으로 저장을 해야될지 .. 너무 막막합니다)

답변 2

·

답변을 작성해보세요.

0

네 이 부분은 사실 정교한 설계가 뒷받침되어야 하는데요

가령 토큰에 활성화/비활성화 속성을 두고 로그아웃하면 토큰를 비활성화하면 됩니다

그리고 토큰은 클라이언트별로 식별할수 있도록 해야 하겠지요

사실 이 부분은 Spring Authorization Server 에서 토큰을 저장하고 이후 사용여부를 확인할 때 처리하는 방식입니다

제기억으로는 OAuth2AuthrizationContext 클래스와 관련있는 것 같은데 참고해 보시기 바랍니다

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.11

안녕하세요, 인프런 AI 인턴입니다.

이민혜님, OAuth2와 관련하여 토큰 재사용 문제로 고민이시군요. 다음 절차를 참고하여 구현을 고려해볼 수 있습니다:

  1. 로그아웃 시 토큰 블랙리스트 처리: 로그아웃을 할 때 사용자 토큰을 블랙리스트에 추가해야 합니다. 이 과정을 처리하는 별도의 관리 시스템(DB, In-memory database 등)을 두어, 로그아웃 시 해당 토큰을 저장해 둡니다.

  2. 요청시 블랙리스트 검증: 인증이 필요한 요청을 받을 때마다 해당 토큰이 블랙리스트에 있는지 확인해야 합니다. 만약 토큰이 블랙리스트에 있다면 요청을 거부합니다.

  3. 만료 시간 관리: 토큰 블랙리스트에 추가하면서, 해당 토큰의 만료 시간도 함께 저장하는 것이 좋습니다. 토큰이 만료되었을 경우 자동으로 블랙리스트에서 제거될 수 있도록 처리하면, 불필요한 데이터를 관리하지 않아도 됩니다.

  4. 보안성 강화: 가능하다면 토큰의 로테이션(재발급)과 단기 만료 토큰 사용을 고려하는 것도 좋은 방법입니다. 이렇게 하면 토큰이 탈취되었을 경우 노출 위험을 줄일 수 있습니다.

관련하여 OAuth2가 Spring에서 어떻게 동작하는지 더 자세히 알아보시려면, Spring Boot 문서의 OAuth2 관련 섹션을 참고하시는 것이 도움이 될 수 있습니다.

OAuth2는 광범위하게 사용되는 인가 프레임워크이며, Spring에서 지원합니다.

자세한 정보는 다음 문서를 참고하세요:
- Spring Boot OAuth2 관련 문서: Spring Boot Documentation - OAuth2

다소 복잡하고 세심한 주의가 필요한 부분이지만, 위의 안내와 문서를 참고하시어 문제를 해결하시길 바랍니다.