스프링부트 시큐리티로 넘어가는 작업을 함.
스프링부트 시큐리티 설정해보기.
순서
- config 설정 파일 정의.
- dataSource 설정. 복잡한 로직이 있지않은 이상 웬만해선는 application 파일에서 설정
- 트랜잭션 처리하는 설정 파일 생성
- 트랜잭션 처리를 반드시 해야하나 ? no . select 같은 경우에는 굳이 필요없음 .
- 어노테이션을 사용하는것과 config bean 을 사용하는것의 차이 : Transactional 어노텐은 사용할 메서드에만 붙이는거고 빈을 만들어 관리하면 사용할 트랜잭션 처리가 필요한 부분에 다 사용할 수 있음
컨트롤러 만들기
. jpa를 사용한다면 domain 을 만들어서 dto 와 entity 폴더 만듬.
CSRF 보호를 비활성하는 이유
http.csrf((config)->{config.disable();}) ; //
수업시간 때 보면 security config 설정에서 csrf 보호를 비활성화를 하는 설정을 했다.
무조건으로 csrf 보호를 하면 좋은것 아닌가 ? 라고 생각을 해서 왜 비활성화를 하는지 의문을 가졌는데 , 알아보니 CSRF 공격은 세션에 있는 쿠키값을 통해서 공격을 하게 되는데 ,
어차피 수업시간에서는 oauth2 방식이나 jwt 토큰을 사용해서 인증정보를 확인할 것이기 때문에 csrf 를 비활성화 해도 되는것이었다.
리멤버미 설정
remember-me 기능을 사용하기 위해서 security config 에서 토큰을 발급하고 저장하기 위한 repository 를 만든다.
@Bean
public PersistentTokenRepository tokenRepository(){
JdbcTokenRepositoryImpl repo = new JdbcTokenRepositoryImpl();
repo.setDataSource(dataSource);
return repo;
}
이제 어플리케이션을 실행할 때 자동으로 Pposisttent login 테이블이 생성된다.
이 테이블에 토큰값이 저장되며 , 사용자가 다시 웹사이트를 방문할 때 서버에서 Persistent token 값을 확인하여 자동으로 사용자를 인증하게 된다.
oauth2 란 ?
Oauth2 란 , 인증을 위한 개방형 표준 프로토콜이다.
(프로토콜이란 원거리 통신장치끼리 메시지를 주고받는 통신규칙 , 또는 방식)
이 프로토콜은 써드파티(타사 애플리케이션) 프로그램에게 사용자가 자신의 데이터를 해당 어플리케이션에 개인정보를 제공하지 않고 [ 카카오톡 , 페이스북 , 네이버 ] 같은 신뢰할 수 있는 어플리케이션의 Open API 와 통신해서 타사 어플리케이션의 사용자의 인증을 처리해주는 방식이다.
oauth2 가 생기게 된 배경
1. 사용자 : 'A' 어플리케이션에 Naver의 ID와 PW를 넘겨주는 것에 대해 신뢰할 수 없다.
2. 'A' 어플리케이션 : Naver의 ID와 PW를 저장하기 때문에 보안 문제가 생기는 경우 모든 책임을 져야한다.
3. Naver : 'A' 어플리케이션을 신뢰할 수 없다.
oauth 방식이 없었을 때 인증을 하려면 위와 같은 문제들이 생기게 되는데 , 이 문제를 해결하기 위해 oauth2 방식이 생기게 되었다.
oauth2 2.0 구성 요소
Resource Server OAuth2.0 서비스를 제공하고 Resource를 관리하는 서버(ex - Google, Naver, Kakao, ...)클라이언트(Client) - 이 서버로 인증 서버에서 발급받은 Token을 넘겨개인 정보를 받을 수 있다.
Resource Owner | 어플리케이션을 이용하려는 Resource Server의 계정을 소유하고 있는 사용자 |
Client | Resource Server의 API를 사용하여 정보를 가져오려는 애플리케이션 서버Client라는 이름이 붙은 이유는, Resource Server에 API를 요청하기 때문 |
Authorization Server | Clinet가 Resource Server의 서비스를 사용할 수 있게 인증하고,토큰을 발행해주는 인증 서버(ex - Google, Naver, Kakao, ... 의 인증 서버)사용자(Resource Owner) -이 서버로 ID, PW를 넘겨서 Authorization Code 발급받음클라이언트(Client) - 사용자가 발급받은 Authorization Code를 이 서버로 넘겨 Token 발급받음 |
AccessToken | JWT의 AccessToken - 해당 토큰으로 Resource Server에 요청해서개인 정보를 받을 수 있다. |
RefreshToken | JWT의 RefreshToken - 해당 토큰으로 AccessToken을 재발급 받을 수 있다. |
oauth2 인증과정
오늘은 oauth2 정의까지만 알아보았고 , 내일부터 이 인증방식을 통해 로그인을 하는 방법을 실습해보도록 한다. !
여행 플래너 프로젝트 시작
드디어 프로젝트를 시작하는 단계에 돌입했다.
내가 낸 아이디어에서 시작한 프로젝트인만큼 반드시 아쉬움이 없는 결과물을 만들어내고 싶다.
기능적인 부분은 다른 팀원들과 같이 진행하는 부분이기 때문에 우선 디자인에 관한 기본 템플릿을 만들어 놓기로 한다.
(기능은 어차피 다 비슷한 부분이고 , 디자인만큼은 내 의견을 많이 반영시켜서 진행하고 싶기 때문이다)
피그마 사용법
피그마를 사용해서 기본 프로토타입을 만들어보려고 하는데 오랜만에 사용하려니 사용법이 제대로 기억이 안나서 조금씩 알아보면서 여기 기록해놓아야겠다.
기본 사용법
데스크탑을 기준으로 한다면 1920 x 1080 크기의 프레임 생성.
이 곳에서 r 을 누르거나 네모를 눌러 사각형을 생성 .
그리고 안에 텍스트를 넣거나 해서 버튼같은 네모칸을 만들 수 있다.
그리고 묶어서 컴포넌트화 시킨다.
컴포넌트
어떤 기능이 동작하는데에 대한 기능요소이다.
예를 들어 로그인 이라는 버튼을 눌렀을 때 로그인 페이지로 이동하게 만드는 버튼을 컴포넌트라고 할 수 있다.
만드느 방법은 포함시키고 싶은 요소를 모두 선택 후 우클릭으로 create component 버튼을 누른다. 그러면 컴포넌트로 생성이 됨. (보라색 테두리)
프로토 타입
웹페이지의 움직임을 임시로 구현하는 작업이다.
웹페이지가 어떤 버튼을 누르거나 어디에 커서를 올렸을 때 웹이 어떻게 반응할지 여기서 테스트해볼 수 있다.
새벽2시경 . 기본적인 디자인 완성…. 죽겠다
'Developer Note > 국비과정 수업내용 정리&저장' 카테고리의 다른 글
24년 12월 4일 (0) | 2024.12.15 |
---|---|
24년 12월 3일 (0) | 2024.12.15 |
24년 11월 28일 (1) | 2024.12.08 |
24년 11월 27일 (2) | 2024.12.05 |
24년 11월 26일 (1) | 2024.12.05 |