LoginSignup
1
1

More than 3 years have passed since last update.

Basic認証の導入を分かりやすくまとめる!

Last updated at Posted at 2019-06-17

Basic認証って???

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

c4956c1ad1b3ea81c25c2591c8596ae8.png

(ふむふむ、仕組みは分かったけど、どんなときに使うんじゃ?):frowning2:

例えば...
・公開前の見られたくないホームページを作成している場合
・気休め程度でセキュリティをあげたい場合(安全面という観点では、完全に信頼できる認証方式ではない)

(なるほど、人に見られたくない時に活用するわけね):relieved:

それでは、手を動かしながら実際に導入していきましょう!


➀Basic認証の導入

完成したコードから見ていきましょう!

application_controller.rb
class ApplicationController < ActionController::Base
  before_action :basic_auth
  protect_from_forgery with: :exception

  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認証によるログインの要求は、全てのコントローラで行いたいですね。そこで、Basic認証の処理をapplication_controller.rbにて、private以下にメソッドとして定義し、before_actionで呼び出すように実装しましょう!

・authenticate_or_request_with_http_basicメソッド

Ruby on RailsでBasic認証を実装するためのメソッドです。

・メソッド内に、ユーザー名とパスワードを直接記載してもいいのですが、もしもGithub上の公開リポジトリでソースコードを管理している場合、コードを読める何者かに不正にBasic認証を突破されてしまいます。

対策として、本コードではコードに直接ユーザー名とパスワードを記述するのではなく、環境変数を利用する実装に切り替えています!


➁環境変数の設定

$ vim ~/.bash_profile

export BASIC_AUTH_USER='test'
export BASIC_AUTH_PASSWORD='1234'

$ source ~/.bash_profile

順を追って説明していきます!

・vim ~/.bash_profile

ローカルサーバーで.bash_profileを開きます。
そして、「i」を押してインサートモードに移行しましょう!

・.bash_profileの内部に記述を追加

BASIC_AUTH_USERとBASIC_AUTH_PASSWORDという名前で、それぞれユーザー名とパスワードを定義します!
記述を追加したら、escキーを押してインサートモードを抜け、「:wq」と入力して保存して終了しましょう!

・source ~/.bash_profile

.bash_profileを再読み込みし、定義した環境変数を有効にしましょう!
こちらのコマンドを実行しないと、反映されないので注意しましょう!


以上で、Basic認証の導入は終了となります!

もし、本番環境のみに適応させたのであれば、application_controller.rbにて、
production?というメソッドを定義し、現在の環境が本番環境ならtrue、そうでないならfalseを返すようにメソッドを定義してあげることで設定することができます!

それでは、ご静聴ありがとうございました:relaxed:

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