Search

8번째 모임(3/29)

활동 이름

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번째 미션 수행 & 코드 설명 ..
마지막 강의 수강^^..