Apple Oauth를 테스트하기 위해서는 Service IDs에 호스트 주소를 등록해야 한다. 만약에 등록되지 않은 주소로 접속할려고 한다면 아래와 같이 Invalid Request에러가 발생한다.
Service IDs에 도메인을 등록해야 한다는 것을 알았으니 등록할 도메인의 규칙을 알아보자면 다음과 같다.
그러면 원격환경에서 개발을 하면되지 않냐? 라고 질문할 수도 있지만 이렇게 할 때는 디버깅의 어려움이 발생할 수 있다.
hosts 파일은 쉽게 말하자면 dns 같은건데 ip 도메인 주소와 운영체제 상에서 맵핑 시켜놓은 파일이다.
sudo vi /private/etc/hosts
위 명령어로 hosts 파일을 열고 주석 처리된 곳외에 아무것에다가 localhost.com과 127.0.0.1을 맵핑시켰다. (원한다면 다른 주소로 해도 된다.)
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost.com
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
그리고 내가 OAuth를 테스트하기 위해 틀어놓은 로컬 웹 페이지를 127.0.0.1이나 localhost가 아닌 localhost.com으로 접근해서 정상적으로 접근할 수 있음을 확인한다.
brew install minica
minica -domains localhost.com -ip-addresses 127.0.0.1
아까 인증서를 발급받은 폴더에 localhost.com 폴더가 생겼을텐데 그 폴더에 들어가서 작업해줘야 한다.
cd localhost.com
openssl pkcs12 -export -in cert.pem -inkey key.pem -out localhost.p12 -name localhost -CAfile minica.pem -caname minica
그리고 생성된 localhost.p12 파일을 Spring Boot Project의 resource 파일에 넣고 application.yaml 파일을 아래와 같이 설정한다.
server:
ssl:
key-store: classpath:localhost.p12
key-store-type: PKCS12
key-store-password: password