스프링 시큐리티
스프링 시큐리티
수강정보
(49개의 수강평)
885명의 수강생
5개월 할부시
월 17,600원88,000원
지식공유자 : 백기선
48회 수업 · 총 8시간 4분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 중급이상
쿠크다스 프로필

statefull vs stateless 질문 쿠크다스 15일 전
안녕하세요. BasicAuthenticationFilter 설명에 오류가 있는것 같아 질문 남깁니다. 확인 부탁드려요. BasicAuthenticationFilter.doFilterInternal 메소드 안에 this.rememberMeServices.loginSuccess(request, response, authResult);가 호출되는 부분이 있는데 여기에서 쿠기가 발급되는 것 같습니다. 그리고 postman을 이용해서 basic authentication을 실행한 결과 SecurityContextPersistenceFilter finally 스코프에서 session에 authentication 정보 또한 넣어 줍니다. 또한, postman으로 basic authentication 후 발급 받은 쿠키만 있다면 이후 다음 요청에 authorization basic 헤더 필드가 없어도 인증된 결과를 확인할 수 있는데요. 제 생각에는 statefull과 stateless의 차이는 인증 방법(basic, form)이 아니라 http client의 차이인 것 같아요. 확인 부탁 드립니다. 감사합니다.

2
쿠크다스 프로필

csrf 필터 질문 쿠크다스 15일 전
안녕하세요. 강의를 듣던 중 의문이 생겨 질문합니다. csrf 토큰을 이용해 현재 들어온 요청이 악의적인 사이트로부터 온 요청이 아닌 것을 검증한다라는 개념은 이해할 수 있었는데요. 아래 시나리오로 악의적인 form 페이지를 생성해도 csrf 필터가 악의적인 요청을 구별할 수 있는지 궁금합니다. 0. 모든 도메인에 대한 cors 요청은 열려 있다고 가정 1. 악의적인 사이트에 사용자가 접속 2. 악의적인 사이트는 실제 form 페이지를 요청 3. 실제 form 페이지에서 csrf 토큰 파싱 & 위조 form 페이지에 csrf 토큰 삽입 4.  사용자에게 위조 form 페이지 제공

2
jhn0902 프로필

에러 질문 jhn0902 1달 전
12:45초까지 따라해서 실행 했는데 밑에 오류가 뜹니다. 몇 번 다시 해봤는데도 안되네요;; org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accountRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract com.example.security.account.Account com.example.security.account.AccountRepository.finByUserName(java.lang.String)! No property finByUserName found for type Account!

1
tdrhktg 프로필

안녕하세요 postman csrf 토큰 질문있습니다. tdrhktg 2달 전
postman에 csrf 토큰을 추가할때는 어떻게 해야하나요??

1
안병찬 프로필

비동기 질문 안병찬 3달 전
앞전영상에서는 MODE_INHERITABLETHREADLOCAL 로 시큐리티 컨텍스트 홀더의 전략을 바꾸지 않더라도 서로다른 스레드 내에서 시큐리티 컨텍스트가 공유되었습니다.  어떤 차이가 있는건가요?? 앞 영상에서도 메인 스레드와 메인스레드로부터 파생된 스레드인 것 같았는데..

1
안병찬 프로필

DelegatingFilterProxy 질문 있습니다. 안병찬 3달 전
서블릿 컨테이너에 등록되는 필터는 DelegatingFilterProxy  하나이고 해당 필터내 호출되는 filterChainProxy 및 여타 filter들은 servlet의 filter 인터페이스를 구현한 것 뿐 스프링에 등록된 필터라고 하셨는데 그럼 서블릿 컨테이너에는 DelegatingFilterProxy  하나만 등록되어있고 filter 호출 시 applicationContext내 filterChainProxy 를 호출해서 security처리를 하는건가요?? 제가 이해 한게 맞는지 궁금합니다. 좋은 강의 감사합니다.

1
안병찬 프로필

인증정보 저장 관련 궁금증 안병찬 3달 전
UserNamePasswordFilter에서 인증하고나서  persistenceFilter에서 session에 context를 저장한뒤 이를다시 가져와 사용한다고 하셨는데 이때 ThreadLocal에 SecurityContextHolder가 저장이 되는건가요??? 그리고 두번째 궁금한점은 was의 경우 요청마다 스레드를 생성하고 요청을 처리해준다고 알고 있는데 그럼 요청마다  ThreadLocal에 SecurityContextHolder를 저장하게 되는건가요?? 좋은강의 감사합니다

1
양동우 프로필

principal에 대해 궁금한점이 있어서 질문 올립니다. 양동우 3달 전
안녕하세요 강의를 보고 있는 학생입니다. Authentication에 좀더 알아보고 싶어서 따로 블로그를 찾아보다가 Authentication에는 principal과 credential데이터를 넣는다고 설명이 되어 있더라고 principal에는 사용자 정보(id)를 저장을 하고 credential에는 패스워드를 저장한다 요렇게 나와있었는데 강의에서는 principal내부에 id와 password를 한번에 저장한다고 말씀하셔서 이해가 잘 가지 않아 질문 올립니다. 항상 좋은 강의 만들어 주셔서 감사합니다!!!

1
양동우 프로필

질문이 있습니다. 양동우 4달 전
안녕하세요 강의를 시청하고 있는 학생입니다. createUser()메소드 앞에 this를 붙이셨는데 왜 붙이셨는지 잘 이해가 가질 않습니다. 혹시 설명을 부탁드려도 되겠습니까?? 항상 좋은 강의 만들어주셔서 감사합니다.ㅎㅎ

1
이호석 프로필

loginPage설정 시 AntPathMatcher 패턴으로 설정 가능한지 궁급합니다~! 이호석 5달 전
안녕하세요! 요즘 강의를 보며 스프링시큐리티 공부를 하고 실무에 적용해보고 있습니다. 그런데 궁금한것이 있는데  아래와 같이 loginPage 설정 시 AntPathMatcher 패턴으로는 설정 할 수 없는건가요? .formLogin() .loginPage("/test/*/main.do") 로그인 페이지를 @PathVariable을 이용하여 유동적으로 설정해야 해서요 예를들어 "/test/apple/login.do", "/test/grape/login.do",  "/test/banana/login.do",  이런식으로 유동적으로 가져가야합니다 ㅠㅠ  혹시 해당 패턴형식으로 설정해도 괜찮을까요? 

2
Hafthor Wheels 프로필

커스텀 필터 관련 질문드립니다. Hafthor Wheels 5달 전
안녕하세요 백기선 강사님, 훌륭한 강의 감사합니다! 예전에 완강했던 스프링 시큐리티 강의를 복습하며 인증을 만드는 중에 궁금한것이 있어 문의드립니다. 강의내용과는 직접적인 관계가 없는 질문을 드리는 점 죄송합니다.  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는 모든 데이터가 쓰이기 전에 입력되어야 한다고 하는데, 그 시점을 찾아서 어떻게든 추가하는것이 맞을까요?

2
Henu 프로필

RemeberMeAuthenticationFilter와 SessionManagementFilter의 관계에 대한 질문입니다. Henu 5달 전
안녕하세요. 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

2
Henu 프로필

AccessDeniedHandler를 직접 구현하여 인가 예외 처리에 대한 질문입니다. Henu 5달 전
안녕하세요 Spring Security ExceptionTranslationFilter 강의 09:00 부터 진행하는 내용을 듣고 질문사항이 생겨  글을 남깁니다. 인증/인가 예외 처리 필터인 ExceptionTranslationFilter 기능 중 AccessDeniedException(인가 처리 실패 예외)에 대해  예외를 처리할 수 있는 페이지를 설정하는 방법과, AccessDeniedHandler를 직접 구현해서 사용하는 방법이 있었는데요. accessDeniedHandler() 메소드를 사용하지 않고 accessDeniedPage() 메소드를 사용하여 URL을 지정하고, Controller와 HandlerMethod를 구현하였습니다. 이때 HandlerMethod의 인자로 Principal 객체, Model 객체 외 HttpServletRequest 객체를 넘겨 받아 AccessDeniedHandler를 직접 구현한 것과 마찬가지로 "로그 출력", "VIEW에서 인증된 사용자 정보와 함께 에러 메시지 출력"을 하였는데요. 이렇게만 본다면 AccessDeniedHandler를 직접 구현하는 것과 예외를 처리할 수 있는 페이지를 설정하여 HandlerMethod에서 처리하는 것의 차이가 없어 보였습니다. AccessDeniedHandler를 직접 구현하여 얻을 수 있는 추가적인 장점이 있을까요? 미리 답변 감사드립니다.

1
mingi.kang 프로필

favicon 요청시 리다이렉트 mingi.kang 5달 전
@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 페이지는 무시되는건가요?

2
조호형 프로필

formLogin() 과 oauth2Login() 를 같이 사용 못하나요? 조호형 5달 전
로그인 페이지를, 기본 폼 로그인이 가능한 상태에서 oauth2 로그인(페이스북, 구글로그인 등)도 같이 되도록 구성하고 싶은데,  configure에 formLogin() 과 oauth2Login() 을 동시에 설정을 못하네요? 질문을 이렇게 드려도 되는진 모르겠는데, 스프링 시큐리티를 이용하면서 아이디/패스워드 로그인과 소셜로그인도 가능하게 하려면 어떻게 해야 하나요?

2
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스