👦인트로


시간이 빨리 흘러서 벌써 카우치 코딩을 수강하기 시작한 지 2주가 지났습니다.
DB 명세서, API 명세서 및 크롤링 작업을 어느 정도 순조롭게 진행한 뒤 이번에는 firebase를 사용한 구글 로그인 및 Github Action을 사용하여 간단한 CI 환경을 구축해 보았습니다.

🍊Firebase을 활용한 Google Login 구현



우선, Google 로그인을 사용하기 전에 이미지를 통해서 전체적인 프로세스에 대해서 확인해 주세요
저는 우선 백엔드 파트를 담당하였기에 6~9번 내용에 해당하는 코드를 구현하게 되었습니다.
사용자로 부터 인증 토큰이 포함된 사용자 정보 요청을 받고 파이어베이스에 인증 토큰 검증을 요청하고 검증 결과를 받아 성공적으로 검증이 되면 사용자 정보를 리턴하는 것을 구현 하면 됩니다. 해당 그림은 카우치 코딩의 구글 로그인 구현 그림을 보고 만들었습니다.
그럼 이제, 그림에 대해서 살펴보겠습니다.
6번 그림부터 설명하겠습니다. 6번에서는 인증 토큰이 포함된 사용자 정보 요청을 클라이언트에서 서버로 보냅니다.
7번에서는 클라이언트가 보낸 사용자 정보 요청이 올바른지 파이어베이스에게 인증 토큰 검증 요청을 보내게 됩니다. 해당 내용에 해당하는 코드를 보겠습니다.

            String header = RequestUtil.getAuthorizationToken(request.getHeader("Authorization"));
            decodedToken = firebaseAuth.verifyIdToken(header);//디코딩한 firebase 토큰을 반환

JWT 토큰에서 HEADER 부분을 firebaseAuth.verifyIdToken에 매개변수를 주어 파이어베이스에 토큰 인증을 요청합니다. 해당 부분은 Controller가 아닌 Filter에서 처리하게 됩니다. 검증을 요청 후 8번에서 검증 결과를 확인한 후 토큰이 유효하지 않다면 FirebaseAuthException이 발생하게 됩니다. 그리고 해당하는 사용자 정보를 얻기 위해서 uid 값을 활용합니다. 그리고 마지막으로 9번 사용자 정보에서 사용자 정보를 리턴하게 됩니다. 리턴하는 방식은 컨트롤러에서 확인할 수 있습니다.

    @GetMapping("/me")
    public ResponseEntity<MemberRegisterResponseDto> login(Authentication authentication) {
        Member member = ((Member) authentication.getPrincipal());
        return ResponseEntity.ok(new MemberRegisterResponseDto(member));
    }

🍏gitAction을 사용한 CI 구현


gitAction은 깃허브 내의 프로젝트에 대하여 테스트/빌드/배포 과정을 자동화하는데 도움을 주는 CI/CD 기능을 제공하는 역할을 합니다. gitAction을 사용하려면 파일명.yml 파일을 .github/workflow 폴더에 넣으면 됩니다.

name: Java CI with Gradle

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'temurin'
    - name: gradlew 권한 부여
      run: chmod +x ./gradlew
        
    - name: Gradle 빌드
      run: ./gradlew build --exclude-task test
      shell: bash

위는 제가 깃의 도움을 조금 받아 작성한 yml 파일입니다.

name은 깃 액션에서 표시되는 이름입니다.

on은 git action 코드가 언제 실행될지를 알려주는 곳입니다.
그리고, 개발자가 깃허브에 특정 이벤트를 특정 브랜치에 발생시킬 때 사용됩니다.
위의 코드는 main 브랜치에 push를 사용하거나 업데이트된 main 브랜치의 내용을 받기 위해 pull_request를 할때 사용됩니다.
jobs에서는 yml 파일이 실행될 때 사용되는 실제 기능들입니다.
우선 build에 관한 내용이고 runs-on에는 실제 실행환경 이름을 명시합니다.
그 후 step이란 부분에서는 원하는 기능을 위에서 아래로 순차적으로 진행하게 됩니다.
위 step의 내용은 jdk 11 설치 -> gradlew 권한 부여 -> 빌드 입니다.
자동 테스트는 깃액션 서버의 환경이 로컬 환경과 달라서 현재는 실행하지 않고 있습니다.

profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글