#はじめに
こんにちは、docker導入によってテストコードが動かなくなるというエラーのために寝れなくなるほど悩んでいるとちです。息抜きに、ちょっと全然違うことについてまとめてみました。ぜひご覧ください
#Basic認証とは
Basic認証とは、HTTP通信の規格に備え付けられている、ユーザー認証の仕組みのことです。閲覧できるユーザーを制限するために使用します。
少ない手間で認証を実装できるため便利ですが、安全性という観点から、完全に信頼できる認証方式ではありません。
HTTP通信で定義されている仕様上、ユーザー名とパスワードが通信経路上にそのまま送られるため、漏洩のリスクがあります。また、ログアウトの概念が定義されていないため、もし必要になる場合は自力で実装する必要があるほか、複数のサーバーをまたいだ認証が難しいといった特徴も問題になります。
#実装について簡単にまとめ
はい、これで完成なんですね、実は。
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
一応、味気なさすぎるので解説します。
そんなに難しいわけではないですが、、鬼長い名前のメソッドがありますね!そう!authenticate_or_request_with_http_basicメソッドです。
RailsアプリケーションでBasic認証を実装するために使用する、Railsのメソッドで、ブロックを開き、ブロック内部でusernameとpasswordを設定することでBasic認証を利用できます。
**ただし、ここで注意なのは、それぞれの値は環境変数で設定してください。**でないと、github上にあげてしまうと誰でも認証できてしまうということになります!
ちなみにローカル、AWS、herokuそれぞれで環境変数は設定する必要があります
###herokuの場合
herokuの場合は、heroku configで設定できます。以下のコマンドで設定しましょう
% heroku config:set BASIC_AUTH_USER="admin"
% heroku config:set BASIC_AUTH_PASSWORD="2222"
###ローカルの場合
macOSがCatalina以降の方は、以下のコマンドです。
% ~/.zshrc
Mojave以前の方は以下のコマンドです。
% source ~/.bash_profile
(以下、macOSがCatalina以降の方と仮定して説明、基本変わりないです)
以下のように環境変数を設定してやってパスを通しましょう
export BASIC_AUTH_USER='admin'
export BASIC_AUTH_PASSWORD='2222'
% source ~/.zshrc
とこんな感じです!!
#参考
###zsh
「zsh」はログインシェルと呼ばれるもので、プログラムを実行する時に、ユーザーの要求に一番最初に対応する役割を担います。隠しファイルなので、特別な設定なしではFinderなどには表示されていません。
環境変数を記載する場所は、設定ファイルである「.zshrc」の中です。
###bash
「bash」とは、zsh同様、ログインシェルの1つです。zshとの違いは、OSがCatalina以降であれば「zsh」、Mojave以前であれば「bash」が自動で適用されます。
環境変数を記載する場所は、設定ファイルである「.bash_profile」の中です。
#おわりに
いい感じに息抜きできたので再度エラーと戦ってきます!行ってきます!笑