[Rails] OAuth2.0 with Google
OAuth2.0이란 - OAuth2.0?를 참고해주세요.
Google API 및 사용자 인증 정보 발급
오늘은 이런 OAuth2.0을 이용한 구글 로그인을 구현해보도록 하겠습니다. 가장 먼저해야 하는 것은 Google의 API를 사용하기 위해 이를 설정하는 행위입니다.
일종의 "내 사이트가 당신들의 API를 쓰고 싶으니까 허가증을 발급해줘" 라는 의미입니다.
프로젝트 하나 생성합니다.
Google+
와Google People API
이 두개의 API 사용을 요청합니다.(사진에서는
Google+
만 있고 저는 이미 사용하고 있기 때문에 관리라는 버튼이 보이는 것입니다.)이렇게 기본적인 API 설정은 끝났습니다. 이제는 우리가 만든 프로젝트가 현재 만든 구글 프로젝트를 사용하고 허용하는 것을 증명하는 클라이언트 ID와 클라이언트 SECRET을 발급 받아야 합니다. 즉 해당 구글 프로젝트를 사용하기 위해서는 이 구글 프로젝트가 제공해주는 고유 식별 값을 받아야 한다는 것입니다.
먼저 대시보드로 돌아가 사용자 인증 정보 메뉴로 들어갑니다.
사용자에게 보여줄 사이트의 이름을 설정해줍니다. 저장 버튼을 눌러 저장 후 사용자 인증 정보 탭으로 들어갑니다.
애플리케이션 유형에서 웹 어플리케이션을 선택후 "승인된 리디렉션 URI"에 다음과 같이 입력해줍니다. 그리고 생성 버튼을 눌러줍니다. http://localhost:3000/auth/google_oauth2/callback
이렇게 사용자 인증 정보가 생성되면 다음과 같이 클라이언트 ID와 SECRET이 발급됩니다. 이 메모장에 잠깐 복사하여 옮겨적어주시기 바랍니다. 이 인증 정보는 매우 민감한 정보이니 반드시 보안에 유의하여 다뤄주셔야 합니다.
(저는 현재는 프로젝트를 삭제한 상태이니 해당 인증 정보는 파기되었습니다.)
이렇게 기본적인 API설정과 사용자 인증 정보를 발급 받는 작업은 모두 끝이 났습니다. 이제 본격적으로 코드를 작성해보도록 하겠습니다.
Implementation
가장 먼저 두 개의 잼을 설치해주셔야 합니다. Gemfile
에 두 잼을 추가한 후 bundle install
을 해줍니다.
gem "figaro"
: 위에서 발급 받은 인증 정보를 보다 안전하게 관리하기 위해 사용gem "omniauth-google-oauth2"
: 구글 API를 쉽게 사용하기 위해 사용
1. Figaro
figaro를 이용하여 발급받은 인증 정보를 프로젝트 내에서 안전하게 사용하기 위해서는 다음과 같은 과정이 필요합니다.
figaro가 정상적으로 설치되었다면 다음 명령어를 한번 더 입력합니다.
bundle exec figaro install
위의 명령어를 실행하면
config/application.yml
과.gitignore
파일이 자동으로 생성될 것입니다. 그리고application.yml
에 발급받은 정보를 입력하고 추가된.gitignore
에는application.yml
이 추가되어 있어 깃헙에 위의 프로젝트를 올릴 때application.yml
은 제외되고 올라가므로 인증 정보가 같이 올라가는 것을 막을 수 있습니다.application.yml
에 다음과 같이 입력받은 인증정보를 작성해줍니다.GOOGLE_CLIENT: '여러분이 발급받은 클라이언트 ID' GOOGLE_SECRET: '여러분이 발급받은 클라이언트 보안 비밀 코드'
오늘의 예제에서는 이렇게 간단하게만 다루기 때문에 더욱 상세한 figaro 사용법은 링크를 참고해주세요.
2. omniauth-google-oauth2
먼저 config/initializers
폴더 안에 omniauth.rb
파일을 생성해줍니다. 그리고 해당 파일안에 다음과 같이 코드를 작성해줍니다.