1
0

More than 3 years have passed since last update.

Basic認証の導入

Posted at

本日は、Basic認証の導入手順を復習のため記事に
残したいと思います。

バージョン

・Ruby 2.6.5
・Rails 6.0.0
・macOS Big Sur

Basic認証とは

Basic認証とは、HTTP通信の規格に備え付けられている、ユーザー認証の仕組みのことです。
簡単に説明すると、作成したアプリケーションにユーザー名とパスワードを記述して入力した人だけが
アプリケーションを使えるよと言うものです。

Basic認証導入手順

まずは、ユーザーとパスワードを設定しましょう。
設定には、authenticate_or_request_with_http_basicメソッドを使用します。
Basic認証によるログインの要求は、すべてのコントローラーで行いたいです。

app/controllers/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 == ユーザー && password == パスワード
    end
  end
end

Basic認証の処理をapplication_controller.rbのprivate以下にメソッドとして定義し、before_actionで呼び出しましょう。
これで、設定できました。

Basic認証コードを改良

設定できましたが、このままではGit Hubに更新した際にそのまま載ってしまうので
セキュリティ的に良くないため、環境変数を利用する実装に切り替えます。
basic_authメソッド内で直接記述しているユーザー名とパスワードを、開発環境の環境変数に格納します。

これは使用しているMacのOSによってやり方は変わってきます。
今回は、OSがCatalina以降のやり方となります。

1.コマンドの実行

% vim ~/.zshrc

2.「iキー」を押して、インサートモードに移行します。
ターミナルの左下に「INSERT」と表示されるのを確認。

3.zshの内部に、以下の記述を追加しましょう。

export BASIC_AUTH_USER=ユーザー
export BASIC_AUTH_PASSWORD=パスワード

既にzsh内に記述がある場合は、その記述の下に「追加」します。既存の記述を削除してしまうと、パソコンが正常に動作しなくなる危険性があります。

4.記述を追加したら「escキー」を押して、 「:wq」と入力しましょう。
入力後、「Enterキー」を押して終了します。

5.最後に、「sourceコマンド」を実行します。

% source ~/.zshrc

これで、環境変数の設定は完了です。
出てきたいくつかの用語について説明させていただきます。

・zsh(ズィーシェル)
「zsh」はログインシェルと呼ばれるもので、プログラムを実行する時に、ユーザーの要求に一番最初に対応する役割を担います。隠しファイルなので、特別な設定なしではFinderなどには表示されていません。
環境変数を記載する場所は、設定ファイルである「.zshrc」の中です。
OSがCatalina以降であれば「zsh」、Mojave以前であれば「bash」が自動で適用されます。

・vim(ヴィム)
vim」とは、サーバー上で使用できるテキストエディタです。vimコマンドを用いることで、指定したファイルの編集をターミナルから行うことが可能です。
以下が使用例になります。

・source(ソース)コマンド
「sourceコマンド」とは、シェルに記述された内容を実行する役割を担います。zshファイルに記述された内容を実行します。

つまり、.zshrcというファイルは隠しファイルで直接記述できないので、vimコマンド
で編集を行い、sourceコマンド実行を行うということですね。
使っているMacのOSによって、「zsh」か「bash」か変わって来るので、設定する前に確認
が必要です。

ここまでできたら再度、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

これで、環境変数を使って、Basic認証を行えるユーザー名とパスワードを定義できました。

本番環境での環境変数の設定

続いて、Herokuの本番環境のアプリケーションにも設定を行います。
下記のコマンドを入力します。

% heroku config:set BASIC_AUTH_USER=ユーザー
% heroku config:set BASIC_AUTH_PASSWORD=パスワード

設定できたかは、下記のコマンドで確認できます。

% heroku config

=== stormy-journey-22625 Config Vars
BASIC_AUTH_PASSWORD:      パスワード
BASIC_AUTH_USER:          ユーザー

変更したコードをコミットしHerokuにデプロイします。

% git add .
% git commit -m "Basic認証を導入"
% git push heroku master

これで、すべて設定は完了です。
使っている環境によってやり方が違う場合もあるので
ご了承ください。

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