Thumbnail
BEST 개발 ・ 프로그래밍 웹 개발
스프링 시큐리티
(4.7)
57개의 수강평 ∙ 1021명의 수강생
88,000원

월 17,600원

5개월 할부 시
지식공유자 : 백기선
총 48개 수업˙총 8시간 4분
평생 무제한 수강
수료증 발급 강의
중급이상 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
내 목록 추가 919 공유
jaden 프로필

get 요청으로 민감한 정보를 가져오는경우 jaden 28일 전
안녕하세요 기선님 항상 좋은 강의 감사합니다 !! :)  Http get 요청으로 민감한 정보를 가져오는 경우에 보안을 위해 get 요청에도 csrf 토큰값을 확인하는 과정을 거치고 싶다면..  CsrfFIlter 의 코드를 추적해보니  private static final class DefaultRequiresCsrfMatcher implements RequestMatcher { private final HashSet<String> allowedMethods = new HashSet<>(Arrays.asList("GET", "HEAD", "TRACE", "OPTIONS")); @Override public boolean matches(HttpServletRequest request) { return !this.allowedMethods.contains(request.getMethod()); } @Override public String toString() { return "CsrfNotRequired " + this.allowedMethods; }} 이렇게  DefaultRequiresCsrfMatcher 를 사용해 GET, HEAD, TRACE, OPTIONS 요청인 경우에는 다른 도메인에서 온 요청에도 응답을 해주는 설정을 하는거 같고, 이 부분을 수정하면 될거같은데 시큐리티 설정 클래스에서 http.csrf().requireCsrfProtectionMatcher() 다음과 같은 방법으로 수정하면 되는게 맞을까요?   

2
jaden 프로필

csrf 토큰 jaden 29일 전
안녕하세요 기선님 좋은 강의 감사드립니다!! :)  흐름을 살펴보니 csrf필터를 거치는 요청의 경우 csrf 토큰이 없는 경우 csrf 토큰을 생성해서 요청을 반환하고, 폼요청을 보낼 때, 반환받은 csrf토큰을 같이 보내는 것 같은데, 그럼 서버쪽에서는 생성해준 csrf 토큰의 값을 어디서 보관하고 있는건가요? csrf 토큰을 포함한 요청이 왔을때 비교를 하기 위해선 반환한 토큰값을 서버측에서도 어디선가 유지하고 있어야 할텐데 그 부분이 어디일지 또 언제까지 유지하는지 궁금해서 질문남깁니다!! =======================  질문을 남기고 구글링을 통해 찾아본 결과는 CsrfTokenRepository를 사용해서 토큰정보를 가지고 있는 것같은데 기본구현체는 HttpSessionCsrfTokenRepository를 사용하는 것으로 보아 Session을 기반으로해서 토큰 정보를 유지하고, session이 사라지면 자연스럽게 토큰 정보도 날라가는것 처럼 보이는데 맞을까요? 

1
jaden 프로필

폼데이터가 아닌, request body로 아이디와 비밀번호를 넘길경우 jaden 1달 전
안녕하세요 기선님 항상  좋은 강의 감사합니다 :) 디버거를 통해 살펴보니, 폼데이터를 가지고  필터에 의해 UsernameAuthenticationToken 생성해 강의에서 설명하신 과정을 거쳐 인증을 처리하는 것을 확인하였습니다. 그렇다면  만약 프론트단에서   JSON 형식의 request body에 아이디와 비밀번호를 넘긴다면 서버측에서는 요청본문의 데이터를 이용해  UsernameAuthenticationToken 을 생성하는 작업을 직접하는 것인지, 아니면 또 다른 방법을 사용해서 인증을 거치는 것인지 궁금해서 질문 남깁니다!  

1
jaden 프로필

application.properties 를 통해 기본유저 정보를 변경 jaden 1달 전
혹시, application.properties 를 통해 기본유저 정보를 변경하고 동작이 잘 되지 않으시는 분들은 크롬 프라이빗 모드로 캐시를 날리고 해보세요! 한 시간 가까이 해맸는데, 크롬 프라이빗 모드로 하니 제대로 동작하네요! 첫 강의에서 개발할때 해당 모드를 사용해서 하는게 편하다고 하셨는데 그 이유를 절감했네요 ... 

1
쿠크다스 프로필

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

2
abcd 프로필

에러 질문 abcd 4달 전
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 5달 전
postman에 csrf 토큰을 추가할때는 어떻게 해야하나요??

1
안병찬 프로필

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

1
안병찬 프로필

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

1
안병찬 프로필

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

1
양동우 프로필

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

1
양동우 프로필

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

1
이호석 프로필

loginPage설정 시 AntPathMatcher 패턴으로 설정 가능한지 궁급합니다~! 이호석 8달 전
안녕하세요! 요즘 강의를 보며 스프링시큐리티 공부를 하고 실무에 적용해보고 있습니다. 그런데 궁금한것이 있는데  아래와 같이 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 8달 전
안녕하세요 백기선 강사님, 훌륭한 강의 감사합니다! 예전에 완강했던 스프링 시큐리티 강의를 복습하며 인증을 만드는 중에 궁금한것이 있어 문의드립니다. 강의내용과는 직접적인 관계가 없는 질문을 드리는 점 죄송합니다.  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
88,000원

월 17,600원

5개월 할부 시
내 목록 추가 919 공유
지식공유자 : 백기선
총 48개 수업˙총 8시간 4분
평생 무제한 수강
수료증 발급 강의
중급이상 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스