0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】Basic認証の導入

Posted at

記事概要

Ruby on RailsにBasic認証を導入する方法について、まとめる

前提

  • Ruby on Railsでアプリケーションを作成している

使用するメソッド

コードに直接ユーザー情報を記述

コードを読めるとログインできるため、セキュリティ対策できていない

手順

  1. application_controller.rbを編集する
    application_controller.rb
    class ApplicationController < ActionController::Base
    	before_action :basic_auth
    	
    	private
    	
    	def basic_auth
    	  authenticate_or_request_with_http_basic do |username, password|
    	    # ユーザー名'admin'のパスワード'1111'のみ利用できる
    	    username == 'admin' && password == '1111'
    	  end
    	end
    end
    

シェルを使用して、zshに環境変数を定義

手順(開発環境)

  1. 環境変数を設定する
    1. ターミナル.appで下記を実行する
      # アプリのディレクトリに移動
      % cd ~/[アプリ名]
      
      % vim ~/.zshrc
      
    2. 「iキー」を押して、インサートモードに移行する
      ターミナルの左下に「INSERT」と表示されたら成功
    3. zshの内部に、以下の記述を追加する
      ※既存の記述がある場合、最下部に追記
      export BASIC_AUTH_USER='admin'
      export BASIC_AUTH_PASSWORD='1111'
      
    4. 記述を追加後、「escキー」を押す
      ターミナル左下の「INSERT」が消える
    5. 「INSERT」が消えたことを確認後、:wqと入力する
    6. 「Enterキー」を押して終了する
    7. 「sourceコマンド」を実行する
      % source ~/.zshrc
      
  2. 環境変数をRailsアプリケーション側で読み込む設定
    1. application_controller.rbを修正する
      application_controller.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
      
  3. サーバーを再起動する

手順(本番環境)※Renderでデプロイ

  1. Renderのダッシュボードを開く
  2. リストから、アプリ名をクリックする
    TYPEが「Web Service」になっていることを確認
  3. 環境変数の設定
    1. メニューの中の「Environment」をクリックする
    2. 下記内容で環境変数の設定を行う
      Key Value
      BASIC_AUTH_PASSWORD 1111
      BASIC_AUTH_USER admin
    3. 「Save Change」をクリックする
  4. 環境変数をRailsアプリケーション側で読み込む設定
    1. application_controller.rbを修正する
    application_controller.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
    
  5. GitHub Desktopを使ってコードをプッシュする
  6. mainブランチが更新されるとrenderでのデプロイが自動的にスタートされる
  7. デプロイ後、render上に公開したアプリへアクセスし、Basic認証をパスできるか確認する

動作確認

  1. サーバーを起動する
  2. アプリを起動する
  3. ユーザー名とパスワードの入力が求められることを確認する
  4. 設定したユーザー名とパスワード以外ではログインできないことを確認する
  5. 設定したユーザー名とパスワードでサイトにログインできることを確認する

Basic認証が現れない場合

Basic認証が現れない場合、下記どちらかを実行する
一定期間「Basic認証を通過した」という情報が保持され、その期間はBasic認証が現れなくなるため

  • シークレットウィンドウにて確認する
  • ブラウザのキャッシュをすべて削除する

Ruby on Railsまとめ

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?