Firebase Auth+Rails+SPA를 사용한 인증 기능
개시하다
최근에 Firebase의 인증 기능을 사용해 보았기 때문에 그 과정과 필요한 요소에 대한 귀결은 다음과 같다.
단계는 다음과 같습니다.
이번에는 API 측 실장이기 때문에 클라이언트 측에서 Firebase를 사용하는 부분은 쓰지 않았다.
또한 Rails 개발이 진행 중인 동안 JWT 인증을 가져옵니다.
4
1. firebase-auth-railsの導入
2. Redisのセットアップ
3. firebase_id_token.rbの作成
4. firebase_uidを保存するカラム追加のmigrationファイル作成
5. コントローラーへの記述
기본적으로 Firebase-auth-rails의github를 참조하면서 진행한다.Firebase-auth-rails 가져오기
이번에 Firebase-auth-rails라는 Gem을 이용하여 JWT 인증을 실시했습니다.
Gemfile에 다음과 같이 설명되어 있습니다.
Gemfile
gem 'firebase-auth-rails'
gem를 설치하다.$ bundle install
Redis 설정
Firebase-auth-rails는 처리 내에redis가 필요하기 때문에(firebase id token 이gem를 사용했기 때문일 수 있음) redis를 설치해야 합니다.
이번에는 docker로 Redis를 가져옵니다.
docker-compose
redis:
image: "redis:5.0.5"
ports:
- "6379:6379"
command: redis-server
volumes:
- "./data/redis:/data"
api:
environment:
REDIS_URL: redis://redis:6379/0 # redisとの接続に必要
REDIS는 Rails와 Redis를 연결하기 위한 것입니다.URL을 기술할 필요가 있다고 합니다.However, there are some issues using localhost with docker in development, which is why the rails server is bound to 0.0.0.0. Thus, we need to specify with an env variable the specific address of where sidekiq can connect to redis
firebase_id_token.rb 만들기
위에서 말한 바와 같이 Firebase-auth-rails의 Firebaseid_Token을 사용하고 있습니다.
저기 있어요. Firebase.id_토큰을 만드는 인티리어.
config/initializers/firebase_id_token
FirebaseIdToken.configure do |config|
config.redis = Redis.new
config.project_ids = ['firebase_project_id']
end
이 설명만 있으면 설치가 완료됩니다.firebase_id를 저장하는 추가 열을 위한migration 파일 만들기
Firebase에 저장된user의 uid와 DB에 저장된 uid를 대조해야 합니다.
따라서user에 id의 열을 추가했습니다.
$ rails g migration AddFirebaseUidToUsers uid:string
class AddFirebaseUidToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :uid, :string
end
end
$ rails db:migrate
이로써 id를 저장하는 열 추가가 완료되었습니다.설정의 마지막 단계에서 rails console에서 다음 명령을 실행하여 Google의 x509 인증서를 받습니다 (모바일 JWT 인증이 필요합니다)
FirebaseIdToken::Certificates.request
Before verifying tokens, you need to download Google's x509 certificates.
To do it simply:
FirebaseIdToken::Certificates.request
컨트롤러의 기술
Firebase를 실행하기 위한 인증 응용 프로그램controller firebaseauth의 기술을 계속 사용합니다.
application_controller
class ApplicationController < ActionController::API
include Firebase::Auth::Authenticable
before_action :authenticate_user # authenticate_xxx にすることでuser以外でも認証可能
end
이 컨트롤러를 계승하여 각 동작 전에 인증,current사용자를 얻을 수 있습니다.끝맺다
Firebase를 사용하면 JWT 인증을 쉽게 수행할 수 있습니다.
마지막으로 인증 프로세스를 요약합니다.
1. クライアントからfirebaseにemailとpasswordを投げる
2. firebase上に一致する情報を持つuserがいるならfirebaseはトークンを返す
3. 受け取ったトークンをリクエストヘッダに含んでRails側にリクエストを投げる
4. Railsは渡されたトークンからJWT認証を行い、firebaseからuserのuidを受け取る
5. 受け取ったuidとDBに保管されたuidを照合して一致するuserを返す(current_user)
Reference
이 문제에 관하여(Firebase Auth+Rails+SPA를 사용한 인증 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/grinch1252/articles/52259c124f353a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)