1. (지난주 차) Chapter 8 공유 내용
antMatchers
.antMatchers().hasRole() 또는
.antMatchers().access()는 해당 경로에 대해서 어떠한
권한을 가져야만 접근할 수 있는가를
표현하는 것입니다. 다음은 antMatchers() 다음으로 지정할 수 있는 항목들입니다.
anonymous()
인증되지 않은 사용자가 접근할 수 있습니다.
authenticated()
인증된 사용자만 접근할 수 있습니다.
fullyAuthenticated()
완전히 인증된 사용자만 접근할 수 있습니다(?)
hasRole() or hasAnyRole()
특정 권한을 가지는 사용자만 접근할 수 있습니다.
hasAuthority() or hasAnyAuthority()
특정 권한을 가지는 사용자만 접근할 수 있습니다.
hasIpAddress()
특정 아이피 주소를 가지는 사용자만 접근할 수 있습니다.
access()
SpEL 표현식에 의한 결과에 따라 접근할 수 있습니다.
not() 접근 제한 기능을 해제합니다.
permitAll() or denyAll()
접근을 전부 허용하거나 제한합니다.
rememberMe()
리멤버 기능을 통해 로그인한 사용자만 접근할 수 있습니다.
Java
복사
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login**", "/web-resources/**", "/actuator/**").permitAll()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.antMatchers("/order/**").hasAnyRole("USER")
.anyRequest().authenticated();
}
Java
복사
1-2 WebSecurity vs HttpSecurity
1) WebSecurity
•
antMatchers에 파라미터로 넘겨주는 endpoints는 Spring Security Filter Chain을 거치지 않기 때문에 '인증' , '인가' 서비스가 모두 적용되지 않는다.
•
또한 Security Context를 설정하지 않고, Security Features(Secure headers, CSRF protecting 등)가 사용되지 않는다.
•
로그인 페이지, public 페이지 등 인증, 인가 서비스가 필요하지 않은 endpoint에 사용
2) HttpSecurity
•
antMatchers에 있는 endpoint에 대한 '인증'을 무시
•
Security Filter Chain에서 요청에 접근할 수 있기 때문에(요청이 security filter chain 거침) 인증, 인가 서비스와 Secure headers, CSRF protection 등 같은 Security Features 또한 사용
⇒ WebSecurity, HttpSecurity에 모두 설정을 한 경우 WebSecurity가 HttpSecurity보다 우선적으로 고려되기 때문에 HttpSecurity에 인가 설정은 무시
//패턴을 이용해서 접근막음
@Override
protected void configure(HttpSecurity http) throws Exception {}
//위에서 적용한 패턴의 제외한 접근 - 정적리소스, HTML 파일 허용처리
@Override
public void configure(WebSecurity web) throws Exception {}
Java
복사
jwtToken
출처 :
1.
처음 접속하는 사용자는 원하는 기능을 사용하기 위해 페이지에 접속
2.
해당 기능을 사용하기 위해서는 로그인이 필요하기에 로그인 요청
3.
로그인을 한 사용자는 Access Token을 발행
4.
다시 해당 페이지에 접속하면 Access Token을 통해 추후에도 인증을 받아 서비스를 제공
5.
이전에 인증을 받은 사용자는 Access Token을 소유하고 있으므로 서버에 서비스를 요청할 때 같이 보내기
6.
JWT 토큰이 제대로된 토큰인지 확인하고 서비스를 제공
access token 만료되면?
•
액세스 토큰은 무지 짧은 시간을 가짐 (왜냐면 누군가 훔쳐가면 끝~~이러면 안되니깐 짧게 시간 설정해둠)
•
그럼 그때마다 로그인!? 넘 불편해잉~
•
이 refresh 까지 탈취당한다면?
2. (이번주 차) Chapter 9 공유 내용
kafka vs rabbitmq
kafka가 적절한 곳
Kafka는 복잡한 라우팅에 의존하지 않고 최대 처리량으로 스트리밍하는 데 가장 적합합니다. 또한 이벤트 소싱, 스트림 처리 및 일련의 이벤트로 시스템에 대한 모델링 변경을 수행하는 데 이상적입니다. Kafka는 다단계 파이프라인에서 데이터를 처리하는 데도 적합합니다.결론적으로 스트리밍 데이터를 저장, 읽기, 다시 읽기 및 분석하는 프레임워크가 필요한 경우 Kafka를 선택해야겠죠. 정기적으로 감사하는 시스템이나 메시지를 영구적으로 저장하는 데 이상적입니다.
kafka 키워드 요약 : 실시간 처리
RabbitMQ가 적절한 곳
위에서 언급한 복잡한 라우팅. 이 경우에는 RabbitMQ를 사용합니다. RabbitMQ는 신속한 요청-응답이 필요한 웹 서버에 적합합니다. 또한 부하가 높은 작업자(20K 이상 메시지/초) 간에 부하를 공유합니다. RabbitMQ는 백그라운드 작업이나 PDF 변환, 파일 검색 또는 이미지 확장과 같은 장기 실행 작업도 처리할 수 있습니다.
요약하자면, 장시간 실행되는 태스크, 안정적인 백그라운드 작업 실행, 애플리케이션 간/내부 통신/통합이 필요할때 RabbitMQ를 사용하세요
3. 4번째 미션 리뷰
•
영진님의 sso 구현 과정 설명 , 미션 이해 과정
4. 다음주까지의 미션 (다음주는 마지막
)
•
5번째 미션 수행 & 코드 설명 ..
•
마지막 강의 수강^^..