월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 스프링 시큐리티
안녕하세요 postman csrf 토큰 질문있습니다.
삭제된 글입니다
- 미해결스프링 시큐리티
비동기 질문
앞전영상에서는 MODE_INHERITABLETHREADLOCAL 로 시큐리티 컨텍스트 홀더의 전략을 바꾸지 않더라도 서로다른 스레드 내에서 시큐리티 컨텍스트가 공유되었습니다. 어떤 차이가 있는건가요?? 앞 영상에서도 메인 스레드와 메인스레드로부터 파생된 스레드인 것 같았는데..
- 미해결스프링 시큐리티
DelegatingFilterProxy 질문 있습니다.
서블릿 컨테이너에 등록되는 필터는 DelegatingFilterProxy 하나이고 해당 필터내 호출되는 filterChainProxy 및 여타 filter들은 servlet의 filter 인터페이스를 구현한 것 뿐 스프링에 등록된 필터라고 하셨는데 그럼 서블릿 컨테이너에는 DelegatingFilterProxy 하나만 등록되어있고 filter 호출 시 applicationContext내 filterChainProxy 를 호출해서 security처리를 하는건가요?? 제가 이해 한게 맞는지 궁금합니다. 좋은 강의 감사합니다.
- 미해결스프링 시큐리티
인증정보 저장 관련 궁금증
UserNamePasswordFilter에서 인증하고나서 persistenceFilter에서 session에 context를 저장한뒤 이를다시 가져와 사용한다고 하셨는데 이때 ThreadLocal에 SecurityContextHolder가 저장이 되는건가요??? 그리고 두번째 궁금한점은 was의 경우 요청마다 스레드를 생성하고 요청을 처리해준다고 알고 있는데 그럼 요청마다 ThreadLocal에 SecurityContextHolder를 저장하게 되는건가요?? 좋은강의 감사합니다
- 해결됨스프링 시큐리티
principal에 대해 궁금한점이 있어서 질문 올립니다.
안녕하세요 강의를 보고 있는 학생입니다. Authentication에 좀더 알아보고 싶어서 따로 블로그를 찾아보다가 Authentication에는 principal과 credential데이터를 넣는다고 설명이 되어 있더라고 principal에는 사용자 정보(id)를 저장을 하고 credential에는 패스워드를 저장한다 요렇게 나와있었는데 강의에서는 principal내부에 id와 password를 한번에 저장한다고 말씀하셔서 이해가 잘 가지 않아 질문 올립니다. 항상 좋은 강의 만들어 주셔서 감사합니다!!!
- 해결됨스프링 시큐리티
질문이 있습니다.
안녕하세요 강의를 시청하고 있는 학생입니다. createUser()메소드 앞에 this를 붙이셨는데 왜 붙이셨는지 잘 이해가 가질 않습니다. 혹시 설명을 부탁드려도 되겠습니까?? 항상 좋은 강의 만들어주셔서 감사합니다.ㅎㅎ
- 미해결스프링 시큐리티
loginPage설정 시 AntPathMatcher 패턴으로 설정 가능한지 궁급합니다~!
안녕하세요! 요즘 강의를 보며 스프링시큐리티 공부를 하고 실무에 적용해보고 있습니다. 그런데 궁금한것이 있는데 아래와 같이 loginPage 설정 시 AntPathMatcher 패턴으로는 설정 할 수 없는건가요? .formLogin() .loginPage("/test/*/main.do") 로그인 페이지를 @PathVariable을 이용하여 유동적으로 설정해야 해서요 예를들어 "/test/apple/login.do", "/test/grape/login.do", "/test/banana/login.do", 이런식으로 유동적으로 가져가야합니다 ㅠㅠ 혹시 해당 패턴형식으로 설정해도 괜찮을까요?
- 미해결스프링 시큐리티
커스텀 필터 관련 질문드립니다.
안녕하세요 백기선 강사님, 훌륭한 강의 감사합니다! 예전에 완강했던 스프링 시큐리티 강의를 복습하며 인증을 만드는 중에 궁금한것이 있어 문의드립니다. 강의내용과는 직접적인 관계가 없는 질문을 드리는 점 죄송합니다. jwt 토큰을 인증하는 필터를 따로 구현했는데요, 만약 프론트에서 제출한 access token이 만료되지 않았을 경우 jwt 인증 필터에서 response에 갱신된 토큰을 만들어서 넣어주고 싶습니다. 단순히 커스텀 jwt 필터에서 response.getWriter() 로 넣어주거나 response.setHeader(key, value)로 넣어주니 프론트에서 받은 response의 header에선 아무리해도 찾을 수가 없었습니다. 여기서 제가 궁금한 것은 1. 이렇게 하는 것이 올바른 방법일까요? 토큰 갱신 로직을 필터에서 넣어줘야하는지, 아니면 aop 같은걸 사용하여 모든 api 의 response header에 넣어줘야 하는 것인지.. 아니면 따로 토큰을 재발급해주는 api를 만들어 보통의 api 호출 후 바로 불러서 갱신해야할지 감이 안잡힙니다. 이 경우 일반적인 접근방법은 무엇인지 궁금합니다..! 2. 만약 이렇게 하는 것이 괜찮은 방법 중 하나라면, response에 어떻게 추가하는 것이 좋을까요? http://tutorials.jenkov.com/java-servlets/httpresponse.html#headers 에 따르면 header는 모든 데이터가 쓰이기 전에 입력되어야 한다고 하는데, 그 시점을 찾아서 어떻게든 추가하는것이 맞을까요?
- 해결됨스프링 시큐리티
RemeberMeAuthenticationFilter와 SessionManagementFilter의 관계에 대한 질문입니다.
안녕하세요. Spring Security RememberMeAuthenticationFilter 강의를 들으며 예제 코드를 따라하다가 궁금한 사항이 생겨 글을 남깁니다. 로그인 페이지를 통해 Remember Me 기능을 사용할 때 처음 로그인 후 JSESSIONID와 remeber-me 쿠기가 발급된 것을 확인하고 JSESSIONID를 소멸시킨 뒤 "/dashboard(인증된 사용자만 접근 가능)" URL을 요청하면 remember-me 쿠키가 있으므로RememberMeAuthenticationFilter을 통해 새로운 토큰(RememberMeAuthenticationToken)을 발급 받고 정상적으로 접근이 가능할 것 같았지만 그렇지 않았습니다. => 로그인 후 "/dashboard" 접근 --> JSESSIONID 제거 --> 새로고침 시 인가 실패 ERROR 페이지 전환 --> 다시 새로고침시 "/dashboard" 접근 이유를 살펴보니 아래 첨부된 이미지와 같이 SessionManagementFilter에서 제공하는 동시성 제어 기능(maxSessionsPreventsLogin(true))을 사용하면 위와 같은 문제가 발생하는 것 같아 보였습니다. [이미지에서는 maxSessionsPreventsLogin(false)로 나와 있지만 테스트 중에는 "true" 인자를 넘겨줬습니다.] 동시성 제어란 세션 수를 설정하거나, 기존 세션을 만료하지 않고, 새로운 세션에 대해 접근하지 못하도록 설정하는 기능으로 알고 있는데요. 이 기능이 Remember Me 기능과 어떤 연관이 있는지 궁금합니다. 또한 Remember Me 기능과 별개의 문제로 SessionManagementFilter에서 maxSessionsPreventsLogin(true)를 설정하고 "로그인 -> 로그아웃 -> 로그인 재시도"시 인증이 실패됩니다. 추측을 해보자면 Remember Me 기능을 사용해서 JSESSIONID를 한번 제거하고, remember-me 쿠키를 통해 새로운 SESSION를 생성하는 것과 로그아웃 후 다시 로그인하여 새로운 SESSION을 생성하는 것이 SessionManagementFilter의 "동시성 제어" 규칙에 어긋나기 때문에 인증이 실패한다라고 생각하면 될까요? [GitHub code link] https://github.com/wdEffort/std-spring-security/blob/master/src/main/java/me/henu/stdspringsecurity/config/SecurityConfig.java
- 해결됨스프링 시큐리티
AccessDeniedHandler를 직접 구현하여 인가 예외 처리에 대한 질문입니다.
안녕하세요 Spring Security ExceptionTranslationFilter 강의 09:00 부터 진행하는 내용을 듣고 질문사항이 생겨 글을 남깁니다. 인증/인가 예외 처리 필터인 ExceptionTranslationFilter 기능 중 AccessDeniedException(인가 처리 실패 예외)에 대해 예외를 처리할 수 있는 페이지를 설정하는 방법과, AccessDeniedHandler를 직접 구현해서 사용하는 방법이 있었는데요. accessDeniedHandler() 메소드를 사용하지 않고 accessDeniedPage() 메소드를 사용하여 URL을 지정하고, Controller와 HandlerMethod를 구현하였습니다. 이때 HandlerMethod의 인자로 Principal 객체, Model 객체 외 HttpServletRequest 객체를 넘겨 받아 AccessDeniedHandler를 직접 구현한 것과 마찬가지로 "로그 출력", "VIEW에서 인증된 사용자 정보와 함께 에러 메시지 출력"을 하였는데요. 이렇게만 본다면 AccessDeniedHandler를 직접 구현하는 것과 예외를 처리할 수 있는 페이지를 설정하여 HandlerMethod에서 처리하는 것의 차이가 없어 보였습니다. AccessDeniedHandler를 직접 구현하여 얻을 수 있는 추가적인 장점이 있을까요? 미리 답변 감사드립니다.
- 해결됨스프링 시큐리티
favicon 요청시 리다이렉트
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() .anyRequest().authenticated(); http.formLogin(); http.httpBasic(); } } SecurityConfig 설정파일입니다. localhost:8080 으로 들어갈 때 favicon도 같이 요청하는데 favicon은 인증이 필요하기 때문에login도 요청하는데요. 이 시점에 화면이 index.html입니다.favicon으로 인해 login을 요청했기 때문에 login 페이지를 보여줘야 하는거 아닌가요? "/" 요청이 permitAll 이라서 일단 "/" 요청에 대한 응답이 나가고 favicon 요청으로 인한 login 페이지는 무시되는건가요?
- 미해결스프링 시큐리티
formLogin() 과 oauth2Login() 를 같이 사용 못하나요?
로그인 페이지를, 기본 폼 로그인이 가능한 상태에서 oauth2 로그인(페이스북, 구글로그인 등)도 같이 되도록 구성하고 싶은데, configure에 formLogin() 과 oauth2Login() 을 동시에 설정을 못하네요? 질문을 이렇게 드려도 되는진 모르겠는데, 스프링 시큐리티를 이용하면서 아이디/패스워드 로그인과 소셜로그인도 가능하게 하려면 어떻게 해야 하나요?
- 해결됨스프링 시큐리티
Principal 관련 질문
먼저 좋은 강의 감사합니다. 스프링 시큐리티 이해에 있어 큰 도움이 되었습니다. :) OAuth을 사용한 구글로그인 관련 내용은 강의 범위에 없어서 혹시 질문이 부적절하면 답변 안해주셔도 됩니다. OAuth 구글로그인을 이용한 기능을 추가하였는데 기존 formLogin을 사용하여 로그인을 하면 Principal이 `UserDetails`이고 OAuth를 사용하여 로그인을 하면 Principal이 `DefaultOidcUser`입니다. OAuth를 추가하기 전 코드들이 UserDetails로 맞춰 코딩하여 Principal이 `DefaultOidcUser` 일 때 캐스팅 오류가 발생합니다. 이 경우 formLogin과 OAuth를 사용한 로그인을 통합으로 관리하고 싶다면 어떻게 해야하는지 궁금합니다. 감사합니다.
- 미해결스프링 시큐리티
favicon.ico request여부
request시 favicon.ico가 처음에는 생성됐었다가 AccessDecisionManager부분을 커스터마이징한뒤 다시테스트한 순간부터 자기혼자안뜨네요 따로 ignoring처리도 안해주었는데.. 이게 별거아닌 문제지만 그냥 궁금해서 여쭈어봅니다 정리)처음에는 favicon.ico 떳었다 -> 코드수정후 다시테스트 -> ignoring처리도 안해줬는데 favicon.ico가 안뜬다
- 미해결스프링 시큐리티
시큐리티 필터는 어떻게해서 스프링 빈을 주입받을 수 있나요?
시큐리티 공부하다가 아무리 찾아도 해소가 되지 않는 궁금증이 있어서 질문드립니다. AuthenticationFilter 과정 중 UserDetailsService 를 이용해서 유저 정보를 가져오는 과정이 있다고 들었습니다. 그리고 UserDetailsService 는 유저 정보를 가져오기 위해 AccountRepository 를 Autowired 해서 가지고 있습니다. 그런데 제가 알고 있기로, 스프링에서 Filter 의 동작은 스프링 컨텍스트에 해당하지 않아 스프링 빈을 주입받지 못하는 것으로 알고 있습니다. 그렇다면 AuthenticationFilter 는 어떻게해서 스프링 컨텍스트에 접근해서 Bean 을 가져와 주입을 받을 수 있는 건가요? 서블릿 필터와 스프링 필터와 시큐리티 필터는 전부 다른건가요? 만약 그렇다면 동작의 순서가 어떻게 되는 건가요?
- 미해결스프링 시큐리티
커스텀 로그인 폼 사용 시 csrf 관련 질문 드립니다.
안녕하세요. 커스텀 로그인 폼을 작성할 때 타임리프를 사용하지 않는다면 폼에 csrf 태그를 직접 코딩해 줘야 하나요? csrf는 스프링이 직접 생성해 주는 것 같은데 어떻게 csrf값을 태그에 넣어 줄 수 있을까요?
- 미해결스프링 시큐리티
loadUserByUsername 호출되는 부분이 어디인지 알 수 있을까요?
메리 크리스마스입니다. 좋은 강의 항상 감사합니다. 디버깅으로 돌려보니 form 로그인 시에 loadUserByUsername을 호출하더라구요. 스프링부트 내부에서 구현되는 건가요? 아니면 시큐리티 내부에서 UserDetailService를 구현체인 클래스를 알아서 찾아서 해당 메서드를 출력하는 지 궁금합니다.
- 미해결스프링 시큐리티
"SPRING_SECURITY_LAST_EXCEPTION" 세션키로 받은 에러 메세지의 문제점
시큐리티 예외를 클라이언트단에서 "SPRING_SECURITY_LAST_EXCEPTION" 세션키로 받으면해커가 해킹을 시도했을시에 계속 인증시도를 하면서 예외를 던지게 되어 WAS에 메모리가 가득차서fullGC가 발생하고 응답속도가 느려진다라는 내용의 블로그의 글을 보게되었습니다. 이 내용의 원리를 이해하고 싶어 질문드립니다. ㅠㅠ 제가 알아본바로는 fullGC는 속도가 느리고 발생하는 순간 자바 어플리케이션을 멈춘다고 글을 본것같습니다. 그렇다면 응답속도가 느려진다는 의미가 위에 설명한 fullGC의 영향으로 응답속도가 느려진다는 의미인건가요? 아니면 블로그에 봤던 글에 허점이 있나요?
- 미해결스프링 시큐리티
thymeleaf가 아닌 vue.js를 이용한 springboot 인증시 질문이 있습니다.
안녕하세요, 강의 감사합니다. vue.js는 thymeleaf와는 달리 자동으로 xsrf토큰도 안 만들어지고 메소드들의 리턴도 html 이름이 아닌 json으로 되는데요, 이럴때는 response에 어떤 내용을 넣어 보내야 하는지, 그리고 api 호출 시 header에는 어떻게 토큰 정보를 넣는지 궁금합니다.
- 해결됨스프링 시큐리티
강의에서 사용하시는 문서
강의하실때 보여주시는 문서는 어디서 받을 수 있을까요?