𝝅번째 알파카의 개발 낙서장

screen

[OAuth2.0] ScribeJAVA로 OAuth2.0 인증서버 구축하기 - 11. OAuth 서비스 심사 신청하기

posts

JAVA

시리즈 톺아보기

OAuth2.0 인증서버 구축기

OAuth2.0 인증서버 구축기
count

개요 🔗

OAuth 서비스를 등록하고 인증 서버까지 별도로 구축했지만, 이렇게 했다고 해서 그 즉시 사용 가능한 것은 아니다.

이 장에서는 OAuth 서비스 심사를 신청하여 OAuth 서비스를 온전히 사용할 수 있도록 한다.

OAuth 서비스의 구분 🔗

OAuth 서비스를 신청했다고 해서, 그 즉시 OAuth를 온전히 이용할 수 있는 것은 아니다. 대부분의 Service Provider는 일종의 단계를 구분하여 서비스를 제공한다.

그 이유는 보안 때문이다. OAuth 서비스를 사용한다는 뜻은 사용자의 인증 정보를 받아 사용자의 정보를 호출할 수 있다는 뜻이다.

만약 비정상적인 사이트가 이를 악용한다면, 개인정보 보안 문제가 발생하기 매우 쉽다.

때문에 서비스 제공자들 대부분은 테스트 단계와 프로덕션 단계로 구분하여 서비스를 제공한다.

테스트 단계 🔗

OAuth 서비스를 제한적으로 사용할 수 있는 단계다.

제공된 API 정보로 인증 서버를 구축하고, 수행하는덴 문제가 없지만 반드시 정해진 계정으로만 OAuth 서비스를 이용할 수 있다.

위와 같은 특성으로 인해 불특정 다수를 타겟하는 서비스와는 맞지 않다.


OAuth를 신청하면 자동으로 테스트 단계로 구성되고, 이후 심사를 거쳐야만 프로덕션 단계로 이용할 수 있다.

서비스 제공자에 따라서 테스트 단계를 세분화하거나, 아예 테스트 단계 자체를 제공하지 않는 경우도 있다.

프로덕션 단계 🔗

OAuth 서비스를 제한없이 이용할 수 있는 단계다.

정해진 계정만 이용이 가능했던 테스트 단계와 달리 모든 계정에서 사용할 수 있다.

서비스 제공자가 요구하는 심사 혹은 정책에 맞춰야만 프로덕션 단계로 이용할 수 있다.

서비스 제공자들은 OAuth를 적용하는 서비스의 심사를 수행하여 OAuth를 사용할 정도로 신뢰할만한 서비스인지를 확인한다.

심사 신청하기 🔗

현재 OAuth 서비스를 적용한 플랫폼은 아래와 같다.

  • NAVER
  • Google
  • KAKAO
  • GitHub

각 플랫폼별로 OAuth 서비스 심사를 신청하여 어떤 계정이든 OAuth 서비스에 접근할 수 있도록 제공하자.

네이버 🔗

네이버는 OAuth 서비스 등록 시 개발 중 단계로 등록된다.

이 단계에선 등록된 계정만 로그인 수행이 가능하다.

심사를 수행하여 배포 모드로 변경하자. 심사는 많이 까다로운 편이다.

위 4개 플랫폼 중 요구하는 자료도 제일 많다.

1. NAVER Developers 접속 🔗

로그인 후 네이버 개발자센터에 접속한다.

상단 헤더의 [Application - 내 애플리케이션] 메뉴로 접속하자.

심사할 애플리케이션을 클릭하자.

2. 로고 등록하기 🔗

로고가 등록되어있지 않다면, 로고를 우선 등록하자. 로고가 있어야 심사를 신청할 수 있다.

네이버 로그인 창에서 해당 로고 사진이 표시될 것이다.

필수 사항이니, 마땅한 로고가 없다면 적당히 하나 만들어서 사용하자.

[API 설정]에서 로고 이미지를 지정할 수 있다. 지원하는 확장자는 jpg, png, gif다.

이후 수정 버튼을 눌러 완료하자.

3. 자료 제출하기 🔗

아래 두 사항에 대해 확인 및 증빙자료를 제출해야 한다.

  • 필수/추가로 지정한 정보를 제대로 활용하고 있는지
  • 서비스를 정상적으로 적용했는지
  • OAuth를 등록하려는 서비스의 종류가 적합한지

필수/추가로 지정한 정보를 제대로 활용하고 있는지 🔗

필수/추가로 지정한 정보를 서비스에서 실제로 유의미하게 사용하고 있는지를 증빙해야한다. 굳이 필요하지 않는 정보 요청을 막겠다는 취지로 보인다. 반드시 필요한 정보만을 필요한 곳에 사용하도록 강제하는 정책이다.

이 프로젝트의 경우, 로그인 시 관련 정보를 출력하므로 해당 페이지의 스크린샷을 첨부했다.

서비스를 정상적으로 적용했는지 🔗

아래 항목 중 하나를 선택한다.

  • 네이버 아이디로 로그인을 통한 신규 회원 가입에 적용
  • 회원가입 없이 단순 로그인 인증에 적용
  • 게시판 글쓰기 또는 댓글 작성 등 일부 메뉴에 적용
  • 기타

이 프로젝트는 로그인만 수행하므로, 2번을 선택한다.

네아로를 정상적으로 적용하고 사용할 수 있는지를 증빙해야한다. 로그인 절차에 문제는 없는지 확인하는 취지로 보인다.

로그인 절차에 따라 스크린샷을 찍어 제공하면 되며, 이 프로젝트의 경우 일련의 과정을 촬영하여 gif로 제공했다.

OAuth를 등록하려는 서비스의 종류가 적합한지 🔗

일부 민감한 서비스를 제공하는 사이트의 경우 추가 증빙 자료 제출을 요구한다.

  • 스포츠 게임 배팅, 투표권발행 유사행위를 제공하는 서비스
  • 온라인으로 주류를 판매하는 서비스
  • P2P 웹하드 서비스
  • 타투 시술 서비스
  • 없음

위 서비스 중 어느 것에도 해당되지 않으므로 5번을 선택한다.

3. 심사 신청 🔗

자료 업로드가 완료되었다면, 심사를 신청하자.

심사는 통상 1 ~ 3일 정도가 소요된다.

여담 🔗

네이버는 심사하는 데 우여곡절이 좀 있었다.

처음엔 단순히 OAuth 로그인만 수행하는 프로젝트라서 적을 것도 없고, 그냥 이메일이랑 이름 표출되는 페이지랑 로그인 절차 스크린샷만 잘 찍어서 보냈는데, 거절당했다.

image

???: 사유 명확하게 적어와.


심사가 거부됐다.

심사 사유를 같이 적어 보내라길래, 나름 필요한 사유를 잘 기입하여 재검토를 요청했다.



image

???: 아 그딴 간단한 건 걍 개발 중으로 써^^


흠... 아무래도 프로젝트가 너무 간단하다보니, 네이버에서도 딱히 심사를 승인해줄 이유가 없는 듯 하다.

그래도 다른 플랫폼은 전부 프로덕션 모드인데, 네이버만 테스트 모드인 것도 그림이 이상해서 다시 한 번 심사를 신청하기로 했다.

지금과 같은 방식은 승산이 없다고 판단, 네이버가 원하는 방식대로 내 나름대로의 "성의"라는 것을 보여주기로 했다.



image

방법은 제안서의 정석 PPT. 내가 생각하기에도 반드시 OAuth 심사를 신청해야하는 마땅한 이유가 없어서, 반 장난식으로 "다 활성화인데 너네만 이렇게 냅둘꺼야...?"같은 뉘앙스를 잔뜩 담아 PPT로 제출했다.

이 시도마저 무산된다면, 그냥 네이버는 깔끔하게 포기할 생각이고, PPT에도 이 마저도 안 된다면 더 귀찮게 굴지 않겠다는 언급도 했겠다. 이제 기다리는 수 밖에 없다.





image

이왜진?


이게 통했다.

왜 승인됐는진 잘 모르겠다. 나름 사유를 잘 적어서 그런건지, 원래 안 되는데 "그래 걍 해준다 아ㅋㅋㅋㅋㅋㅋ"로 된건지.

어쨌든 네이버 신청은 완료됐고, 나름 재밌는 경험이지 않나 싶다. 여러분들도 심사 신청할 때 간단한 프로젝트라고 겁먹지 말고 최대한 성의를 담아 신청하도록 해보자.

내가 첨부했던 PPT다. 혹시 관심이 있다면 참고하길 바란다.

Google 🔗

구글은 OAuth 서비스 신청 시 테스트 모드로 등록된다.

프로덕션 모드로 변경하기 위해 아래의 절차를 수행한다.

1. Google Cloud Platform 접속 🔗

OAuth 서비스를 등록했던 Google Cloud Platform에 접속한다.

2. 로고 등록 🔗

로고 이미지를 등록하지 않았다면, 등록하자.

[OAuth 동의 화면]을 클릭하면 나오는 화면에서 [앱 수정]을 클릭하여 로고를 추가하면 된다.

2. 게시하기 🔗

image

해당 페이지에서 [게시]를 클릭하여 프로덕션 모드로 전환한다.


image

이와 같이 변경된다. [테스트로 돌아가기]를 선택하면 다시 이전처럼 테스트 모드로 되돌릴 수 있다.

3. 인증하기 🔗

[확인 준비]를 클릭하여 애플리케이션을 인증하자.

필요한 내용을 작성하고 제출하면 심사가 시작된다.

구글은 약 4 ~ 6주간 소요된다고 하니, 천천히 기다리자.

KAKAO 🔗

카카오는 OAuth 서비스 신청 시 제한적인 프로덕션 모드로 등록된다.

카카오의 심사 방식은 조금 특이하다. 별도의 심사를 거치지 않아도, 모든 카카오 계정이 제한없이 OAuth 서비스를 이용할 수 있다.

네이버나 구글같이 별도의 테스트모드를 두어 별도의 심사를 요구한 뒤 접근 권한을 열어주는 것과는 반대되는 방식이다.


카카오의 차이는 정보 제공 동의 선택에서 나타난다.

image

정보 제공 선택 시, 몇몇 정보는 검수가 필요하다는 이유로 필수 선택이 불가능하다.

이러한 정보는 비즈니스 앱을 별도로 신청하여 심사를 통과해야만 필수 선택이 가능하다.

그런데 문제는 이거, 비즈니스란 이름답게 심사 시 사업자번호를 요구한다...


그렇다고 개인은 신청이 불가능하냐? 그건 또 아니다. 이 링크에서 이와 관련한 카카오 개발자의 답변을 확인할 수 있다.

image

  • 앱 이름
  • 애플리케이션 ID
  • 애플리케이션 소유자 이메일
  • 본인 인증 완료 여부
  • 신청 목적

위 항목을 빠짐없이 기입하여 데브톡에 글을 올리면 되는 것 같다.

앱 이름은 애플리케이션의 성격에 맞게 등록하도록 권고하고 있다.

  • test
  • 테스트
  • oauth2
  • 로그인

위와 같은 범용적인 이름은 등록을 가급적 지양하는 모양이니, 애플리케이션의 아이덴티티를 드러낼 수 있는 이름을 선택하자.


카카오는 반드시 심사를 신청하지 않더라도 로그인은 누구나 수행할 수 있으니 신청 유무는 자유다.

필자는 위와 같이 신청했다.

밤에 작성했는데, 그 다음날 아침에 바로 승인해줬다. 로그인 API는 별다른 서류나 증빙자료를 요구하지 않는 듯 하니, 원한다면 부담없이 신청하자.

이제 이메일을 필수로 받을 수 있다!

GitHub 🔗

GitHub는 서비스 등록 즉시 프로덕션 모드로 동작하므로 심사 과정이 없다.

OAuth App 생성 즉시 모든 GitHub 계정에서 사용이 가능하다.

정리 🔗

프로젝트에 적용된 플랫폼에 대한 OAuth 서비스 심사를 진행했다.

심사가 모두 완료되면 누구나 제한없이 OAuth 로그인을 사용할 수 있을 것이다.


이 장을 끝으로 OAuth 인증 서버 개발기에 대한 기술적인 부분은 정리가 끝났다.