2023.01.23.MON

ronglong·2023년 1월 23일
0
  1. 환경변수 오류
  • JWT 실습에서, secretKey를 환경변수로 로컬에 설정해두고, 경로를 가져다가 인텔리제이 yml 파일에서 사용하는 부분이 있었다.
    그런데 해당 부분에 대한 운영체제별 설명이 거의 없어서, 일단 macOS에서 환경변수 설정하는 방법을 찾아봤고, shell의 종류가 이렇게 많다는 것을 처음 알았다.
    내 mac에서 쓰는 shell은 zsh이다.
    -> zsh 쉘 사용자 환경변수 설정 방법
    https://hydev.tistory.com/28
  • 환경변수 설정은 잘 되었으나(터미널에서 source 후, echo 명령어로 설정한 환경변수를 호출하여 확인까지 해 봄. printenv로도 환경변수 확인할 수 있다.), 인텔리제이에서 이를 계속 인식하지 못했다.
    혹시 yml파일에서 경로를 ${JWT_SECRET_KEY}로 쓴 게 문제인가 해서, 중괄호를 빼봤는데, 그렇게 되면 환경변수를 인식하지 않고, 저 문자 자체를 인식하여, weakKeyException이 발생한다.
    -> weakKeyException
    https://m.blog.naver.com/fbfbf1/222634739123

  • 이외에도 다양한 방법을 찾아 시도해보았고, 5명의 친절한 동기들과도 얘기해봤지만, 일단 내가 적용한 방법 자체는 틀리지 않았다는 걸 알게 되었다. 하지만 인텔리제이가 값을 못 찾는 원인은 5시간을 삽질했는데도 찾지 못했다. 결국 환경변수 안 쓰고 그냥 yml 파일에 직접 적절한 길이의 시크릿키를 박았음.
    -> UnsatisfiedDependencyException : Could not resolve placeHolder
    https://oingdaddy.tistory.com/235
    -> 이전 기수 관련 블로그
    https://velog.io/@subimm/SEBBE-65%EC%9D%BC%EC%B0%A8-JWT-%EC%9D%B8%EC%A6%9D2-Authentication

  • 환경변수 삽질 때문에 현타 오져서 지난주 목,금 이틀동안 블로깅도 안 하고, 손 놓고 있었다.

  1. JWT

  2. OAuth2

  • 어플리케이션에서 회원의 크레덴셜(Credential)을 직접 관리하지 않는 인증 프로토콜
    - 사용자 정보를 보유하고 있는 써드 파티 어플리케이션에서 사용자의 인증을 대신 처리
  • for 써드 파티 어플리케이션 API의 직접 사용 or 추가 인증 서비스 제공
  • Resource Owner - Client - Authorization Server, Resource Server
    -> Resource Owner의 인증 요청
    -> Client가 써드 파티 어플리케이션 로그인 페이지로 리다이렉트
    -> Authorization Server에서 Client에 accessToken 발급
    -> Client가 Resource Server에 리소스 요청 및 리소스 획득
  • Client : Resource Owner를 대신해서 Resource를 사용하는 대리인. 토큰도 얘가 갖고 있음.
  • Scope : AccessToken으로 접근할 수 있는 리소스 범위
  • Authorization Grant : Client가 AccessToken을 얻기 위한 수단
    - https://blog.naver.com/mds_datasecurity/222182943542
    • Authorization Code Grant
      • 권한 부여 승인 코드 방식 (가장 보편적)
      • RefreshToken 사용 가능
      • Client에서 Authorization Code 요청할 때, 미리 생성한 Client ID, Redirect URI, 응답 타입을 함께 전송
    • Implicit Grant
      • 암묵적 승인 방식
      • 별도 code없이 바로 Access Token 발급
      • 보안에 취약한 스크립트 언어를 사용하는 브라우저에 최적화된 방식
      • RefreshToken 사용 불가능
    • Resource Owner Password Credential Grant
      • 자원 소유자 자격 증명 승인 방식
      • 자신의 서비스에서 제공하는 애플리케이션의 간편 로그인
      • Authorization Server, Resource Server, Client가 모두 같은 시스템에 속해 있을 때만 사용 가능
      • RefreshToken 사용 가능
    • Client Credentials Grant
      • 클라이언트 자격 증명 승인 방식
      • RefreshToken 사용 불가능
      • 자격 증명을 안전하게 보관 가능한 클라이언트에서만 사용
  1. 기타

<느낀 점>
JWT는 스프링 시큐리티 기본 구조와 함께, 내일 다시 정리해야겠다.
양이 너무 많고 복잡하고 어려워서...

0개의 댓글