무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링부트 시큐리티 & JWT 강의
AuthenticationFilter 의 ObjectMapper 관련
UserNamePasswordAuthenticationFilter 구현체를 만드실 때 Http request 의 deserialization 객체로 ObjectMapper를 쓰셨는데요. 아마 저런식으로 new 를 지정해서 쓰게 되면 대용량 트래픽이 발생하는 경우(정확히는 사용자가 최초로 동시에 로그인해서 몰릴때겠죠?) ObjectMapper instance가 메모리를 많이 잡아먹어 문제가 발생할 여지가 높아 보입니다. -> 그래서 별도로 싱글톤으로 객체를 주입하여 써보려하면 어떨까 합니다. 또한 Filter를 별도 설정하면서 따로 injection하지 않고 새로 만들어 쓰는 전략을 취하셨는데요. Filter 내 토큰 인증시 UserDetails 나 Authentication에 대한 이용이 들어가므로 new쓸 수 밖에 없긴 할거같은데... 개선방안이 있으신지요?
- 미해결스프링부트 시큐리티 & JWT 강의
postman으로 요청해도 아무런 반응이 없습니다.
스프링 시큐리티가 제공하는 url을 제외하고 컨트롤러에 명시된 /home /token /join 모두 무반응인데 이 경우 어떤 설정이 잘못된건지 알 수 있을까요?
- 미해결스프링부트 시큐리티 & JWT 강의
20초가량에 csrf 를 disable 한 이유가 뭔가요?
이전 수업을 들었으면 알 거라고 하는데 어디에 나와있을까요? 1강에서도 그냥 말없이 disable만 하셔서 질문 남겼는데 여기서도 그냥 넘어가서 제가 빼먹은 부분이 있나 싶어서요
- 미해결스프링부트 시큐리티 & JWT 강의
08:08 시점에 csrf disable 한 이유가 뭔가요?
08:08 시점에 csrf disable 한 이유가 뭔가요? csrf가 기본적으로 켜져 있는건 알겠는데 굳이 disable한 이유가 있나요?
- 해결됨스프링부트 시큐리티 & JWT 강의
인증 과정 커스텀
강의를 수강하면서 기존 시스템에 JWT와 Spring Security 를 적용하고 있습니다.1)비밀 번호가 없을경우 Password Encoder - 기존 암호화 알고리즘을 변경 할수 없어 PasswordEncoder를 구현한 커스텀 PasswordEncoder로 해결은 하였는데 생체 인증의 경우 비빌번호를 생체정보가 대신하기 떄문에 비밀 번호업이 인증을 해야 하는데 PasswordEncoder 없이 인증을 진행 할 수 있는 방법이 있을까요? 2. UserDetailService를 구현시 loadUserByUsername 을 구현해야 하는것으로 알고 있는데 인자가 사용자 정보를 가져 오기 위한 유니크한 키(로그인 게정등등) 인에 현재 시스템은 로그인 게정만 가지고는 사용자의 정보를 조화 할수 없는데 loadUserByUsername을 구현하지 않고 UserDetails(User를 상속한 CustomUserDetail) 객체를 리턴 할 수 있는 방업이 있을까요.
- 미해결스프링부트 시큐리티 & JWT 강의
oAuth 회원가입 할 때 외부 정보를 더 받아오려면 어떻게 해야 하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님. 좋은 강의 정말 잘 들었습니다. 저는 개인 프로젝트를 하기 위해 이 강의를 수강했는데요. 강사님이 강의에서 쇼핑몰을 예시로 들어 언급하신 것 처럼, 구글이나 카카오 로그인에서 제공해주는 정보 이외에도 휴대폰번호나 주소와 같은 옵션도 회원가입 시 받아오고 싶은데요. 이러한 경우에는 어떻게 해야하나 싶어 질문 남겨봅니다! api 를 따로 사용해야 할까요?
- 미해결스프링부트 시큐리티 & JWT 강의
강의에서 구현하신 filter들 관련 질문입니다.
좋은 설명의 강의 잘 보았습니다. 강의를 토대로 spring security + oauth2 + jwt 기반 로그인을 구현하고 있는데, 로그인 성공 이후로도 인증이 되지 않아서 질문드려봅니다. authenticationEntryPoint를 직접 구현했고 security config 클래스에 등록해둔 상태에서 로그인 이후 리소스에 접근하려니까 인증이 안되었다고 합니다. log를 찍어보니까 JwtAuthorizationFilter에서 securityContext에 authentication 객체가 들어간것을 확인까지 했는데 계속 인증이 안되고 제가 구현한 customAuthenticationEntryPoint로 처리가 됩니다. 컨트롤러에서 파라미터로 Authentication을 줘보니 이거는 또 잘나옵니다. log에 찍힌 순서는 jwtAuthorizationFilter -> controller -> customAuthenticationEntryPoint 입니다. Question) Filter를 거쳐서 controlloer로 가는것으로 알고 있고, controller에서 Authentication 객체가 잘 들어온 상태면 controller이후로 인증이 실패했다는 얘기인데 가능한 것인가요?? (postman에서는 잘 동작합니다.) 참고로, 클라이언트는 바닐라 js로 구현했습니다. 로그인 인증 -> jwt 토큰 로컬 스토리지에 저장-> 요청 보낼 시 헤더에 Authorization 헤더를 붙여 보내는 식으로 구현했습니다.
- 미해결스프링부트 시큐리티 & JWT 강의
시큐리티가 제대로 작동 안하는거 같습니다
시큐리티 로직에 따르면 apu/user/** api/admin/** 빼고는 전부 인증권한이 필요 없어야 하는데 api/save로 회원가입하려고 하면 인증이 필요하다고 떠는데 왜 그런거죠 anyRequest.petmitAll로 나머지는 권한 필요없게 설정했는데 @Overrideprotected void configure(HttpSecurity http) throws Exception { // http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class); http .csrf().disable() // 세션 사용안함 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .cors().and() .addFilter(corsFilter) // CrossOrigin(인증x), 시큐리티 필터에 등록 인증(O) .formLogin().disable() // form 로그인 사용안함 .httpBasic().disable() // http 로그인 방식 사용안함 .addFilter(new JwtAuthenticationFilter(authenticationManager())) // AuthenticationManger .addFilter(new JwtAuthorizationFilter(authenticationManager(), userService)) .authorizeRequests() .antMatchers("/api/user/**") .access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')") .antMatchers("/api/admin/**") .access("hasRole('ROLE_ADMIN')") .anyRequest().permitAll();}
- 미해결스프링부트 시큐리티 & JWT 강의
스프링 시큐리티도 세션 기반 인증 방식 사용할 수 있나요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.' 안녕하세요? 스프링 시큐리티를 몰라서 강의를 듣고있는 병아리 개발자입니다! 밑에 질문글에서 세션과 차이점에 관한 질문 답변에 밑 블로그 글이 있어서 읽고 왔는데 질문이 있습니다. https://blog.outsider.ne.kr/1160 이 글에서도 읽어봤듯이 웹에서의 동작에서는 JWT방식을 추천하지 않는다고 나와있는데 이는 토큰의 탈취때문이라고 적혀있는 것 같습니다. 현재 강의는 jwt처럼 토큰 인증 방식을 사용하는 것 같은데 그렇다면 스프링 시큐리티도 세션 기반 인증 방식을 사용할 수 있나요? 그리고 강의는 잘 보고 있습니다 ^^ 친구들에게도 추천하고 다닙니다 ㅎㅎ 최근 유튜브 구독도 했어요~ !!
- 미해결스프링부트 시큐리티 & JWT 강의
BycryptPasswordEncoder 주입시 순화참조 문제
저는 mac m1버전 인텔리제이 spring boot 2.64 버전 java8 로 하고있습니다. 저도 13:41 BycryptPasswordEncoder를 주입하니 SecurityConfig와 순환참조가 걸려 진행이 되지 않았습니다. 그래서 PrincipalOauth2UserService에서 private BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); 이렇게 생성하여서 진행하였습니다. 혹시 강의를 보시는 다른 분들을 위해 참고 코드를 남겼습니다.
- 미해결스프링부트 시큐리티 & JWT 강의
세션
11 : 28초 쯤에 authentication 을 세션에 저장한다고 하셨는데 securityConfig에 세션정책에 STATELESS 해도 상관이 없는건가요??
- 미해결스프링부트 시큐리티 & JWT 강의
chain 부분
chain.dofFilter 부분이 이해가 잘안가서 그런데 우리가 만든 필터를 FilterChainProxy에 넣어준다는 의미로 봐도 무방할까요?? 정확히 무슨 역활을 하는 부분인가요??
- 미해결스프링부트 시큐리티 & JWT 강의
질문있습니다
react 연동해서 로그인 해볼려고 하는데 login api를 불러와서 username과 password를 입력하면 객체로 들어가서 User user = om.readValue(request.getInputStream(), User.class); 이부분 에서 오류가 납니다 스트링 타입으로 바꾸는 방법 없을까요?
- 미해결스프링부트 시큐리티 & JWT 강의
Authorization 검증 filter 2곳의 차이점이 궁금합니다 !
안녕하세요 강사님? 먼저 좋은 강의 감사드립니다 ! 수강 중 궁금한점이 있어 질문드립니다. 현재 Authorization Header에 대한 검증이 아래 2필터에서 이뤄지고 있습니다. - filter3 - BasicAuthenticationFilter 얕은 지식으로 고민해보았을 때, Authorization의 검증은 BasicAuthenticationFilter에서만 처리해도 충분하지 않을까? 라는 의문이 들었습니다. filter3(addFilterBefore)에서 이뤄지는 Authorization 헤더의 검증이 어떤 의미가있을까요?? 큰 의미가 없다면.. 어떠한 경우에 자주 활용되는지 궁금합니다 ! 또, 일반적으로 Authorization을 검증하는 Best Practice가 궁금합니다 ..!
- 미해결스프링부트 시큐리티 & JWT 강의
soruce
안녕하세요 강의 잘 보고 있습니다. 다름이 아니라 source 넣는 부분에서 오류가 나던데 찾아봐도 해결책을 못찾겠네요 ㅠㅠ 왜그런거죵
- 미해결스프링부트 시큐리티 & JWT 강의
BasicAuthenticationFilter 필터에 대해서 질문드립니다.
먼저 좋은 강의를 올려주신거에 감사합니다! 강의를 보다가 BasicAuthenticationFilter를 상속받은 필터가 생각과는 다르게 동작해서 질문드립니다. 강의에서는 BasicAuthenticationFilter는 인증, 인가가 필요한 요청에만 동작하고 그 외에는 동작하지 않는다고 나와있는데. 시큐리티 설정 @Configuration@EnableWebSecuritypublic class Config extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .formLogin().disable() .httpBasic().disable() .addFilter(new TestFilter(authenticationManager())) .authorizeRequests() .mvcMatchers("/").permitAll() .mvcMatchers("/user").hasRole("USER"); }} 컨트롤러 @RestControllerpublic class BasicController { @GetMapping("/") public String test1() { return "기본 접근"; } @GetMapping("/user") public String test2() { return "유저 접근"; }} 필터 public class TestFilter extends BasicAuthenticationFilter { public TestFilter(AuthenticationManager authenticationManager) { super(authenticationManager); } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("인증이 필요한거만 실행"); chain.doFilter(request, response); }} 이렇게 간단한 필터 테스트용 프로젝트를 작성했는데. "/" 요청 같이 permitAll() 처리하면 인증이나 인가가 필요 없어서 필터를 타지 않을거라 생각했는데. "인증이 필요한거만 실행" 이 찍히면서 필터를 타는데. 어디가 문제인지 모르겠습니다.. 지금 jwt 토큰을 사용해서 프로젝트를 구현 중인데. 필터를 onceperrequestfilter를 상속 받아서 구현해서 로그인이나 토큰 재발급 같은 인증, 인가가 필요 없는 요청도 필터를 타면서 만약에 사용이 불가능한 토큰이 들어 있으면 막혀가지고 BasicAuthenticationFilter를 상속한 필터로 교체 해보려고 하는데. 생각한 것 처럼 동작하지가 않네요 . 단순하게는 필터 시작할 때, 리스트를 만들어서 해당 요청은 넘어가게 해줘도 되겠지만 더 깔끔하게 처리하고 싶어서 문의드립니다.
- 미해결스프링부트 시큐리티 & JWT 강의
JWT TOKEN의 만료시간을 갱신해줄순 없나요?
안녕하세요, 강의 너무 감사합니다. JWT를 처음 로그인시에 발급할 때 만료시간을 정하는 과정에서, 토큰을 계속 쓰는 상황이라면 토큰의 유효시간을 갱신시켜줘야 불편함이 없을것 같은데, JWT토큰은 만료시간이 지나면 다시 무조건 로그인을 해줘야 하는걸까요? 구글에 검색해보았을때, refresh token 과 accesstoken의 개념이 나오긴 하는데, 따로 api 적으로 갱신하는건 없는지 여쭤봅니다. 아 추가로.,.. jwt 생성시에 subject라는게 있는데 현업에서 보통 어떤 용도로 사용되나요??
- 미해결스프링부트 시큐리티 & JWT 강의
강의너무좋습니다! 유료로 변경해도 괜찮은 퀄리티입니다
강의 너무 잘듣고있습니다 이걸무료로들어도 되나싶을정도로 분량도 많고 잘설명해주셔서 좋습니다! 궁금한점이 몇개있는데 - 실무에서 oauth와 같은 소셜 로그인 기능없이 순수 로그인 기능을 구현한다고 했을때에도, spring interceptor 나 java.io.Filter 로만 구현하는지 아니면 spring security framework를 사용하는지 궁금합니다 - spring security에서 oauth 인증서버를 더 이상 지원하지 않는다고 공식홈페이지에 적혀있던데 제가 제대로 본게 맞는지 궁금하기도 하고, 만약 지원하지 않는다면 oauth 인증서버를 구현할 대체할 library를 사용해야하는지 궁금합니다 The Spring Security OAuth project is deprecated. The latest OAuth 2.0 support is provided by Spring Security. See the OAuth 2.0 Migration Guide for further details.(https://spring.io/projects/spring-security-oauth)
- 미해결스프링부트 시큐리티 & JWT 강의
강의 잘들었습니다 질문이 있습니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현재 vue와 Spring으로 토이프로젝트를 진행 중인 학생입니다. 전체 강의를 다 듣고 1강부터 9강까지의 내용을 프로젝트에 적용시켜보았습니다. 1강부터 9강까지의 내용에서는 jwt를 사용하지 않고 oauth로그인을 하는 강의인것으로 이해했습니다. vue를 localhost:8081에 실행시키고 spring을 8080에 실행시켜두었습니다. <a href="/oauth2/authorization/google">로그인</a> 위와같은 a태그를 만들고 이를 클릭했을때 http://localhost:8081/oauth2/authorization/google 이 주소로 가게되어서 로그인이 잘 되지 않는것 같습니다. jwt를 사용하지 않고 이를 해결할 수 있는 좋은 방법이 있을까요?? 강의 잘 들었습니다. 소중한 답변 기다리겠습니다 ㅎㅎ
- 미해결스프링부트 시큐리티 & JWT 강의
강의 너무 좋아요!! 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업 정말 좋아요. 큰 도움을 얻어 갑니다. 중간에 강사님께서 에러를 찾으시거나 하실 때 어떤과정을 가지셨는지도 궁금합니다! 특히 마지막에 30분가량 찾으셨다는 supper.doFilter 를 지운 그 부분이 궁금합니다. 추가로 필터를 어떤 식으로 추가하고 그런 부분은 강의를 보면서 배운 부분은 사용할 수 있을 것 같습니다. 하지만 새로운 설정을 하거나 또는 위에서 질문한 에러를 찾기 위해 공부가 필요할 거 같다고 생각했습니다. 공홈에서 문서를 보는게 답 인가요? 혹은 다른 공부 방식이 있다면 알려주시면 감사하겠습니다. 아니면 경험에서 오는 것 인가 궁금합니다!