inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트 시큐리티 & JWT 강의

로그인 방식에 대해서 궁금한게 있습니다!

479

박성춘

작성한 질문수 4

0

안녕하세요 유튜브 메타코딩 시절부터 즐겨봤는데 인프런에서도 보니 반갑네요! ㅎㅎ

 

다름이 아닌 로그인 방식에 대해서 궁금하게 생겨서 질문 드립니다.

현재 프로젝트에서 로그인 방식은

  1. 프론트에서 아이디와 비밀번호를 전송함

  2. Controller에서 아이디와 비밀번호를 받아 Service단에서 로그인 로직을 돌며 DB와 비교하여 로그인의 성공 유무를 알려줌 (성공시 JWT 제공) (정해진 JSON 형식대로 DTO에 담아 프론트에 제공)

  3. 그 후 요청마다 JWT를 JWTAuthenticationFilter에서 인증함.

 

그런데 문득 강의를 듣다보니 로그인 방식을 굳이 Service 단으로 가져가지 않고 필터단에서 처리하는게 더 괜찮은 방식이며 Spring Security를 더 적절히 사용하는게 아닐까라는 생각이 들었습니다.

이렇게 된다면 사용자가 입력한 아이디와 비밀번호를 Custom 필터에서 로그인을 진행하게 되겠네요.

 

하지만 이렇게 될 경우 현재 프로젝트에서 사용하는 로그인 방식과는 다르게 DTO에 담지 못하니 직접 response에 현재 정해진 JSON 형식대로 만들어 보내주는 방법밖에 없을거 같은데 이러한 방식이 주로 사용되는 방식일까요?!

spring spring-security jwt

답변 2

0

최주호

하지만 이렇게 될 경우 현재 프로젝트에서 사용하는 로그인 방식과는 다르게 DTO에 담지 못하니 직접 response에 현재 정해진 JSON 형식대로 만들어 보내주는 방법밖에 없을거 같은데 이러한 방식이 주로 사용되는 방식일까요?

 

좋은 질문입니다. 유효성 검사를 편하게 하려면 필터단이 아닌 서비스에서 로그인을 처리하는거 좋을 수 있습니다. 그래서 저는 인증서비스를 따로 만들어서 컨트롤를 통해서 들어온 값을 유효성 검사를 처리한뒤 서비스에서 로그인 처리를 하고 있습니다.

 

강의에서는 인증을 필터에서 처리하고 있습니다.

0

박성춘

감사합니다!!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
박성춘님, Spring Security를 사용하여 로그인을 구현하는 방식에 대해 궁금해하시는군요.

전통적으로 Spring Security에서는 인증 과정을 필터에서 처리하는 것이 일반적입니다. 올려주신 질문 상황을 바탕으로 몇 가지 제공된 정보를 기준으로 설명드리자면, Spring Boot와 Spring Security를 사용할 때, 기본적으로 HTTP 기본 인증(httpBasic) 혹은 폼 기반 로그인(formLogin) 방식을 사용하여 애플리케이션을 보호합니다.

Spring Security의 필터 체인에서는 사용자 정의 필터를 통해 인증 로직을 구현하고, 이를 통해 사용자가 입력한 아이디와 비밀번호를 검증할 수 있습니다. 인증에 성공할 경우 필요한 JWT 토큰을 생성하고, 커스터마이징하여 JSON 형식으로 응답을 구성하여 반환할 수도 있습니다.

사용하신 기존 방식이 불가한 것은 아니지만, Spring Security를 이용하면 보안 관련 처리를 Spring Framework에 위임하여 보다 체계적으로 관리할 수 있습니다. 추가적으로, @EnableGlobalMethodSecurity 어노테이션을 사용하여 메소드 레벨에서 보안을 설정할 수도 있습니다.

Spring의 설정에 의해 기본 생성되는 사용자 정보 외에도, spring.security.user.namespring.security.user.password를 제공하여 사용자 이름과 비밀번호를 변경할 수 있습니다.

결과적으로, 필터를 사용하여 인증 로직을 구현하는 방식은 Spring Security의 고급 기능을 충분히 활용하면서 표준 접근 방식을 따르는 것으로, JWT를 포함하여 다양한 인증 방식을 적용하는데 적합합니다. 실제 프로젝트에서 적절한 인증 방식은 프로젝트의 요구사항, 보안 요구사항, 그리고 개발의 용이성을 고려하여 결정해야 할 사항입니다.

참고하실 수 있도록 Spring Security 관련 문서의 링크를 남깁니다:
- Spring Security 기본 정보: Spring Security Reference
- Spring Boot에서 Spring Security 사용하기: Spring Boot Security How-to Guide

JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?

0

98

1

Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?

0

401

1

13:23 system.out 출력문이 다르게 나옵니다.

0

130

1

수료증 문의

0

227

2

9분대에 질문이 있습니다 !

0

115

1

password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?

0

321

1

이전 강의 참고하라는 말씀

0

253

1

강의 실습하다가 막히는 분들 참고(2024년8월 기준)

2

1116

2

구글 소셜 로그인 302

0

201

1

오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize

1

584

1

[자바] 시큐리티 Config 참고

13

953

1

이론강의

0

280

1

SpringSecurity JWT 로그인 URL 2개 설정하는 방법

0

488

1

2024.06기준) 최근 SecurityConfig 설정 문의

0

922

3

구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.

0

678

2

특정 url필터 거는 방법 이슈

0

422

1

강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?

0

279

1

25강 마지막 테스트에서 오류

1

1044

2

jwt를 저장하는 위치에 궁금한 점이 있습니다.

0

298

1

mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데

0

697

1

세션 인증방식이 REST 원칙에 위배되는 건가요?

0

342

1

jwt와 실제데이터의 관계

1

245

1

jwt 와 세션ID의 관계

1

313

1

SecurityConfig에서 세션 설정, 인가 설정

0

422

1