学習のアウトプット(Basic認証機能)
【Basic認証】
HTTP通信にデフォルトで備えられている認証機能。
設定すると、ユーザー名とパスワードを知っているユーザーのみがサーバーにアクセスできるようになる。
ただしBasic認証は必要最低限のセキュリティなので注意。
・ログアウトの機能がない(必要であれば自身で実装しなければならない
・HTTP通信を用いるので漏洩のリスクがある
・複数のサーバーをまたいだ認証が難しい
--------------------------------------------------------------------------------------【authenticate_or_request_with_http_basicメソッド】
authenticateは「認証する」という意味。
Basic認証を実装するためのRuby on Railsのメソッド。
今回は全てのコントローラーに認証を設定するために、
application.controller.rbのprivateにメソッドを記載し、before_actionで全てのコントローラーに適用した。
class ApplicationController < ActionController::Base before_action :basic_auth private def basic_auth authenticate_or_request_with_http_basic do |username, password| username == 'admin' && password == '2222' end end end
コードに直接ユーザー名やパスワードを記載すると、Gitの公開レポジトリ上で他人に情報を見られてしまうリスクがある。
(上記のBASIC認証では、application.controller.rbをGitで見るとすぐにユーザー名やパスワードが分かる)
これを回避するために、これらを環境変数に入れる方法がある。
このとき、環境変数はシェルというプログラムを用いて
zshやbashといったログインシェルと呼ばれるファイルの中に記載する。
※ログインシェルはターミナルとOSの窓口で、プログラムを実行する時に最初にユーザーの要求に対応する役割を担う。
【zsh】
OSがCatalina以降の場合に適用されるログインシェル。
隠しファイルになっていて、Finderなどで確認することができない。
環境変数を記載するのは、.zshrcの中。
【bash】
OSがMojave以前の場合に適用されるログインシェル。
zsh同様に隠しファイルになっていて、.bash_profileに環境変数を記載する。
--------------------------------------------------------------------------------------
【vim】
サーバー上で使用できるテキストエディタで、.zshrcや.bash_profileを編集することが可能。
ターミナルからコマンドを入力することで、サーバー上のファイルに追記・編集・保存などができる。
通常モードではファイルの保存やvimの終了などが、インサートモードではファイルの編集が可能。
【sourceコマンド】
シェルに記載された内容を実行するコマンド。
--------------------------------------------------------------------------------------
【全体の流れ】
BASIC認証をコントローラーに記述した状態で、
vimでbashを編集(OSの種類によってzshかbashか分かれる)
※bashの場合、vim ~/.bash_profileをターミナルで実行
→iを押してインサートモードにして、
(元々記載がある場合は、消さずにその下に追記する)
→escを押して:wqを入力
→enter
→source ~/.bash_profile(sourceコマンド)を実行
→Ruby on Railsで環境変数を読み込む
コントローラーでusername ==とpassword ==としていた箇所を、下記のように修正する
username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
→Heroku上で環境変数を読み込む
heroku config:set BASIC_AUTH_USRE="設定したいユーザー名"
heroku config:set BASIC_AUTH_PASSWORD="設定したいパスワード"
上記をターミナルで入力。
その後heroku configを実行して正しく表示されているか確認する。
→変更したコードをコミットしHerokuへデプロイ
git add .→git commit -m "Basic認証を導入"→git push heroku master
上記をターミナルで入力して完了。
最後にheroku上のアプリでBasic認証が導入されていることを確認する。