Spring 특강 06

이상인·2023년 7월 17일
0

OAuth 2.0 기반의 인증방식 4가지

OAuth 2.0을 기반한 소셜 로그인 연동 을 해봤다.

  • 써봤다고 하면 안된다. (서버역할이 중요하기 때문)

HTTPS 환경에서만 작동한다.
https? http 프로토콜 안에 암호화하는 layer가 하나 더 들어가있다.
network packet (네트워크상에서 왓다갓다하는 단위) 암호화
https를 안 쓰면 상용환경(사용자 배포) 에서는 거의 쓰지 못하게 되어있다
써야 해커의 공격에서 안전하다.
이거 안 하고 있는 회사는 굉장히 위험하다.
OAuth 2.0과 JWT의 차이점?
2.0은 프로토콜, http같은 개념, 약속 // JWT는 수단 (토큰)

SRP
단일책임원칙

서버를 나누는 이유, 트래픽

Refresh Token access토큰이 만료된 경우 재발급을 위해 사용


Auth 2.0의 인증 방식

Authorization Code Grant 방식

  • 고객관리, 인증 관련 팀에 Auth 2.0으로 비빈다고 하면 이런 방식을 학습하고 구현해서 준비해야 한다.

인가의 레벨


Implicit Grant
  • refresh 토큰을 발급할 수 ?다.
  • 프론트에서 client 역할을 한다.
  • 다른 유형의 인증을 사용할 수 없는 경우에만 사용해야 한다.
  • 인가를 책임지는 주체가 프론트이다

Resouce Owner Password Cradentials Grant Flow - 비밀번호를 사용하는 방법 - 클라이언트와 서버가 같은 레이어, 권한일때 - 서버를 직접 구축해야 한다
Client Credentials Grant - 클라이언트가 resource owner일 때 사용한다

테스트 코드

  • 서비스 회사의 App은 테스트 코드가 반드시 있다.
  • 이것까지 만들어져 있어야 코드가 완성된 것이다.
  • 이게 없이 주먹구구식으로 나가고 있는 회사는 위험하다 (언제 장애가 날지 모름)
  • 장기적으로 봤을 때 유지보수를 생각하면 반드시 있어야 한다.

junit5가 가장 대중적이다.
mockito

Assertions
Given 실행전 필요한 값 선언
when 실행
then 예측결과가 맞는지 확인
where 테스트 조건문 junit만 가지고 하기엔 어렵다 spock framework를 같이 써야 함 groovy라는 테스트 언어
값 불리언 널 익셉션

mock(허수아비, 가짜) object 매우 중요

  • mocking
  • mockBean
    • 가짜객체를 주입시켜서 mocking한다(가짜객체의 리턴값을 정해주는 것)

spy 개념 매우 중요 (유닛테스트를 구현하시느냐?)
junit썻다 mockito를 썻다 하면
mock썻냐 spy썻냐 질문이 나온다.
실제 호출하면 null값이 나오는게 mock

  • 내가 신경을 전혀 쓰고싶지 않고 사용하고자 하는 메서드만 내가 재정의 해줄 때

spy는 깡통이 아니고 실제 코드대로 구현이 되어있다 = mockito.spy

  • spy를 쓰면 일부만 overide를 하고 일부는 그냥 쓸 수 있다.
  • new 객체와 비슷, 하지만 mock처럼 다시 재정의가 가능하다
  • mock보다 무거운 개념
  • 객체의 기능을 이것저것 써서 테스트 해야할 때

// 대부분 mock을 쓴다 7:3?~8:2?

생각보다 처음에 개발자가 unit테스트에서 잡아낼 수 있는 버그가 많다.
내가 짠 코드가 정상작동한다는 보증서같은 느낌

서비스 로직에 대해서 만큼은 반드시 unit테스트를 구현하길 바란다.

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

글이 잘 정리되어 있네요. 감사합니다.

답글 달기

관련 채용 정보