1
1

More than 1 year has passed since last update.

Ruby on RailsのアプリケーションにBasic認証を導入する手順

Last updated at Posted at 2022-12-07

概要

アプリケーションにBasic認証を導入したので、その手順を記載する。

実装方針

認証に必要なユーザー名やパスワードは、環境変数を呼び出す形式で実装する。
開発環境および本番環境に、環境変数を設定する。
デプロイはherokuを利用する。

実装条件

適切なユーザー名やパスワードが入力された場合は、認証を通過できること。
適切ではないユーザー名やパスワードが入力された場合は、認証は通過できないこと。

Basic認証とは

・HTTP通信の規格に備え付けられている、ユーザー認証の仕組みのこと。
・サーバーとの通信が可能なユーザーとパスワードをあらかじめ設定しておき、それに一致したユーザーのみが、Webアプリケーションを利用できるようになる。

・Ruby on Railsにはauthenticate_or_request_with_http_basicメソッドという、Basic認証をするためのメソッドが用意されている。便利なのでこれを利用しよう!
 ・ブロックを開き、ブロック内部でusernameとpasswordを設定することでBasic認証を利用できます。

安全性について

・HTTP通信で定義されている仕様上、漏洩のリスクはある。ログアウトの概念もないため、必要になる場合は自分で実装しなければいけない。
・完全に信頼できる認証方式ではないので、必要最低限の認証機能として利用すること。

・履歴書やポートフォリオに記載する場合・友人や知人にアプリケーションを見てもらう場合は、GitのURLに加えて、Basic認証のIDとPASSも記載しないと誰もみてくれないので要注意!笑
・逆にあやまってIDとPASSを不特定多数が見れるところに記載してしまうと、不正利用に繋がるので注意です^^

手順

・application_cotroller.rbに以下を追記する。
application_cotroller.rbに記載するのは、全てのコントローラーで共通して実行する必要があるため。

application_cotroller.rb
class ApplicationController < ActionController::Base
  before_action :basic_auth

  private

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
    end
  end
end

vim ~/.zshrcで環境変数を定義する。
 ・「vim」:サーバー上で使用できるテキストエディタのこと。
 ・「zsh」:ログインシェルと呼ばれるもので、プログラムを実行する時に、ユーザーの要求に一番最初に対応する役割を担う。シェルとは、「ターミナルとOSを繋ぐ窓口役」のこと。隠しファイルなので、特別な設定なしではFinderなどには表示されない。環境変数は.zshrcの中で設定する。
 ・「bash」:zsh同様、ログインシェルの1つです。OSがCatalina以降であれば「zsh」、Mojave以前であれば「bash」が自動で適用される。環境変数を記載する場所は、設定ファイルである「.bash_profile」の中。

・ インサートモードに移行してユーザー名とパスワードを設定する
export BASIC_AUTH_USER='xxxx'
export BASIC_AUTH_PASSWORD='xxxx'
・escで「通常モード」に → :wqで編集した内容を保存してvimを強制終了
 ・編集した内容を保存しない場合は、q!で強制終了できる。一応補足しておくと、:wは作成・編集したファイルを保存、:qはvimの終了を意味している。

source ~/.zshrc
→シェルに記述された内容を実行

・application_cotroller.rbでusernameとpasswordを修正する

application_cotroller.rb
  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV['BASIC_AUTH_USER'] && password == ENV['BASIC_AUTH_PASSWORD']
    end
  end

・以下を実行
heroku config:set BASIC_AUTH_USER="xxxx"
heroku config:set BASIC_AUTH_PASSWORD="xxxx"

heroku config
→config内容を確認

・Gitにコミット・プッシュする
git add .
git commit -m "Basic認証を導入"
git push heroku main

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1