Local 환경에서 Sign in with Apple 테스트하기

kukjunLEE·2024년 12월 8일
0

개발자 팁

목록 보기
2/2
post-thumbnail

목적

개발할 때, O-Auth Login으로 Apple을 이용해서 로그인을 진행하려고 했습니다.

하지만 Apple 보안정책 상, Redirect URL이 HTTPS가 적용되어야 해서, 도메인을 발급받고 SSL 인증서를 적용한 서버가 있어야 했습니다.

Apple Login이 잘 되는지 확인하기 위해서 해야하는 절차가 너무 복잡해 방법을 찾아보던 도중, Local에서도 간단하게 Apple Login을 테스트해볼 수 있는 방법을 찾아서 공유하고자 합니다.




내용

전제 조건

Apple Developer Key 설정은 설명에서 제외

Sign in with Apple 기능을 구현하려면 먼저 Apple의 개발자 계정이 있어야 합니다.

그리고 App ID, Service ID, Key를 등록해두어야 합니다.

이렇게 Apple 설정하는 방법은 인터넷에 잘 나와있으므로 이번 설명에서 제외하겠습니다.


구현 Code와 O-AUTH Flow는 설명에서 제외

목적에 맞게 작성하기 위해 O-Auth를 구현하기 위한 실제 코드와 Flow는 이번 내용에 포함하지 않았습니다.



1. Host 파일 편집(지정한 도메인으로 인식)

특정 ip를 domain에 mapping할때 사용

사용 이유

SSL/TLS 테스트: HTTPS 인증서를 도메인 기반으로 발급받아 로컬 테스트를 진행할 때 필요.



사용법

/etc/hosts 파일을 열고, 아래와 같은 형식으로 추가함

127.0.0.1    example.local
  • example.local이라는 도메인이 127.0.0.1로 매핑돼서, 브라우저에서 example.local을 입력하면 127.0.0.1 로 연결


2. mkcert 인증서 발급(신뢰하는 기관 인증서 발급)

로컬 개발 환경에서 신뢰할 수 있는 SSL/TLS 인증서를 손쉽게 생성할 수 있는 도구

보통 웹 개발자들이 HTTPS 설정이 필요한 로컬 서버에서 안전한 연결을 테스트할 때 사용함.

사용 이유

  1. 브라우저에서 "안전하지 않은 연결" 경고를 없애기 위해서 사용
  2. 로컬에서 HTTPS를 테스트해 실제 배포 환경과 동일한 조건을 만들기 위해서 사용
  3. Let's Encrypt 같은 공개 인증서가 로컬 환경에선 적용되지 않으니, 자체 인증서를 빠르게 발급하기 위해서 사용

특징

  • 간단함: 명령어 몇 개만으로 인증서 생성.
  • 로컬 CA: 자체적으로 신뢰할 수 있는 인증기관(CA)을 설정.
  • 크로스 플랫폼: macOS, Windows, Linux 모두 지원.

사용법

brew install mkcert      # mkcert install
mkcert -install          # 로컬 CA 설치
mkcert example.com       # 특정 도메인용 인증서 발급
mkcert localhost 127.0.0.1 ::1  # 로컬 서버용 인증서


3. Apple Login

  1. Host mapping

    sudo vi /etc/hosts 에서 localhost 대신 demo.apple-login-test.app 을 사용.

    • APPLE에 등록된 도메인(apple-login-test)
    ...
    #127.0.0.1      localhost
    127.0.0.1      demo.apple-login-test.app
    ...

  2. mkcert 적용

    프로젝트 root 경로에서 도메인 인증서 발급

    brew install mkcert      # mkcert install
    mkcert -install          # 로컬 CA 설치
    mkcert demo.apple-login-test.app.  # 특정 도메인용 인증서 발급

  3. 해당 인증서를 이용해서 실행하고 테스트

    poetry run uvicorn config.asgi:application --host demo.apple-login-test.app --port 8443 --ssl-keyfile=demo.apple-login-test.app-key.pem --ssl-certfile=demo.apple-login-test.app.pem
    • python이 아니라 다른 언어로 테스트해도 상관은 없습니다. 하지만 SSL 인증서는 꼭 적용해야 합니다.


4. 주의사항

/etc/hosts 파일 변경은 local dns 설정에서 아주 중요한 부분입니다.

테스트가 끝나면 꼭 원래대로 돌려놓아야 합니다.

  • /etc/hosts 파일을 잘못 설정하면 시스템에서 Localhost(127.0.0.1)와 관련된 요청을 처리하지 못하거나, 네트워크 연결 시 특정 서버의 주소를 잘못 해석할 수 있습니다.
  • 이는 로컬 개발 환경의 정상적인 작동을 방해하거나, 다른 서버와의 통신 실패로 이어질 수 있으므로, 테스트가 끝나면 반드시 원래 상태로 복구해야 합니다.
profile
Software Engineer

0개의 댓글