Developer Note/국비과정 수업내용 정리&저장

24년 12월 2일

DH_PARK 2024. 12. 10. 04:49

스프링부트 시큐리티로 넘어가는 작업을 함.

스프링부트 시큐리티 설정해보기.

순서

  • 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