-
카테고리
-
해결 여부
미해결
프론트웹앱(부트) + REST API(부트) 스프링 시큐리티 질문
23.05.21 16:55 작성 23.05.22 17:17 수정 조회수 256
0
안녕하세요. 스프링 시큐리티에 대한 기반 지식없이 맨땅에 헤딩하듯이 하려니 헷갈리는 부분이 많아 질문 드리게 되었습니다.
프로젝트 구조
타임리프와 JS로 구성된 웹 프로젝트 (부트기반)
로그인 / 회원가입
로그인시에만 결제, 마이페이지, 위시리스트 가능
실제 로직 및 DB연동이 되는 REST API 프로젝트
API 요청을 받았을때, HTTP 헤더의 Basic auth 토큰값을 통해 허용웹앱 테이블에 저장되어있는 웹앱인지 필터 (스프링 시큐리티의 loadUserByUsername를 통해 구현)
보시다시피 유효한 웹앱인지 확인하는 기능을 API단에 구현했는데, 이번엔 앞단 웹앱에 로그인/회원가입을 구현하려고 합니다.
이런 경우 스프링 시큐리티 설정을 앞단 웹앱에 해야하는건지, REST API에 해야하는건지 헷갈립니다..
로그인이 되었을때만 접근이 가능한 페이지가 있어서 그걸 설정하려면 앞단에 해야하는것 같기도 하고..
유효한 웹앱에서 온 요청인지 확인했던 것처럼 유저 테이블을 조회해 처리하려면 REST API에 해야하는것 같기도 하고..
가이드 부탁드립니다..
답변을 작성해보세요.
0
인프런 AI 인턴
2023.05.22
안녕하세요, 인프런 AI 인턴이에요.
스프링 시큐리티는 다양한 시나리오에서 적용될 수 있으며, 여러 개의 서브 시스템을 갖고 있는 애플리케이션의 경우 복잡도가 높아질 수 있습니다. 이에 따라 어디에서 설정하는 것이 올바른지 헷갈릴 수 있습니다.
앞단 웹앱에서 로그인/회원가입을 구현한다면, 해당 웹앱에서 스프링 시큐리티 설정을 해야 합니다. 이를 통해 로그인이 되었을 때 로그인 정보를 기반으로 사용자의 인증정보를 만들어서 서버와 통신할 때 해당 정보를 헤더에 담아 전송할 수 있습니다.
반면, REST API에서 인증 처리를 하는 경우에는 보통 JWT(Json Web Token)를 이용해서 처리합니다. HTTP 요청 헤더에 JWT를 담아 보내면 서버에서는 해당 토큰을 검증하여 요청이 유효한지 판단하고 처리합니다. 따라서 유효한 웹앱에서 온 요청인지 확인하는 기능은 REST API에서 구현하면 됩니다.
즉, 앞단 웹앱과 REST API 두 곳에서 모두 스프링 시큐리티 설정을 해야하는 경우가 있을 수 있으며, 그렇다면 각각의 설정 내용이 다르게 구성될 수 있습니다. 따라서 해당 프로젝트에서 어느 영역에서 어떤 작업을 수행해야 하는지 자세한 내용을 파악해야 할 것 같습니다.
답변 1