[Rails] devise+omniauth에서 페이스북, 구글 로그인 오류 구현

2464 단어 OmniAuthRails

개요


다음은 Rails5에서 devise,omniauth를 사용하여 로그인 기능을 실현할 때 발생하는 오류를 해결하는 방법을 총괄하였다.같은 방법으로 잘못을 해결했으면 좋겠다.

컨디션


사용한gem

gem 'dotenv-rails'
gem 'omniauth-rails_csrf_protection'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
많은 글들이omniauth를 사용하여 이루어졌지만, 그 취약성을 지적하여omniauth-railscsrf_보호기를 사용하고 있습니다.
공식 문서 여기 있습니다.
https://github.com/cookpad/omniauth-rails_csrf_protection
문장을 인용하다
https://qiita.com/NT90957869/items/2a3ce18dedf93ccf2bdc

오류 중 하나인 Authentication passthru입니다.


링크에서 날아올 때 이런 화면이 나와요.

해결책


Qita 기사대로 했는데!왜!
내 생각에는 그렇다.
문서를 잘 읽어라.
이번에 사용한gem은omniauth-rails입니다.csrf_보호기입니다.
공식 문서를 읽은 후,method를 지정할 필요가 있음을 발견하였다
You will then need to verify that all links in your application that would initiate OAuth request phase are being converted to a HTTP POST form that contains authenticity_token value. This might simply be done by changing all link_to to button_to, or use link_to ..., method: :post.
따라서 페이스북 같은 링크는 다음과 같다.
@_new.html.haml
     = link_to user_facebook_omniauth_authorize_path , method: :post

오류 2 JWT: InvalidIatError


그 이유는'OS의 시간적 편차'라고 한다.
omniauth-google-oauth2의 공식 문서에는 다음과 같은 기술이 있다.
skip_jwt: Skip JWT processing. This is for users who are seeing JWT decoding errors with the iat field. Always try adjusting the leeway before disabling JWT processing.
그래서 다음과 같이 보충하겠습니다.
config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true
공식 문서
https://github.com/zquestz/omniauth-google-oauth2

좋은 웹페이지 즐겨찾기