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?

Basic認証の導入ガイド

Posted at

概要

Basic認証とは、HTTP通信の規格に備え付けられているユーザー認証の仕組みです。サーバーと通信できるユーザー名とパスワードをあらかじめ設定し、それに一致するユーザーのみがWebアプリケーションを利用できるようにします。この記事では、RailsアプリケーションにBasic認証を導入する方法を簡単に説明します。

1. Basic認証の設定方法

1.1 コントローラーでの設定

authenticate_or_request_with_http_basicメソッドを使用して、開発中のRailsアプリケーションにBasic認証を導入します。以下の例では、ユーザー名adminとパスワードpasswordで認証を行います。

class ApplicationController < ActionController::Base
  before_action :basic_auth

  private

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == 'admin' && password == 'password'
    end
  end
end

1.2 すべてのページでBasic認証を適用

上記のコードをApplicationControllerに追加することで、アプリケーションのすべてのページでBasic認証が適用されます。

2. セキュリティの向上: 環境変数の利用

コードにユーザー名とパスワードを直接記述すると、公開リポジトリでソースコードを管理している場合、不正にBasic認証を突破されるリスクがあります。この対策として、環境変数を利用します。

2.1 開発環境での環境変数の設定

まず、開発環境の環境変数にユーザー名とパスワードを設定します。

  1. ターミナルを開き、.zshrcファイルを編集します。

    vim ~/.zshrc
    
  2. 以下の行を追加して、ファイルを保存します。

    export BASIC_AUTH_USER='admin'
    export BASIC_AUTH_PASSWORD='password'
    
  3. ファイルの変更を反映するためにsourceコマンドを実行します。

    source ~/.zshrc
    

2.2 Railsアプリケーションでの環境変数の使用

環境変数を読み込むように、basic_authメソッドを修正します。

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. 動作確認

環境変数が正しく設定されているか確認するために、サーバーを再起動し、任意のページにアクセスしてBasic認証の動作を確認します。間違った情報ではログインできないこと、正しい情報でログインできることを確認しましょう。

4. 本番環境での設定

本番環境でも同様に環境変数を設定します。例えば、HerokuやRenderなどのホスティングサービスを利用している場合、それぞれのサービスのダッシュボードから環境変数を設定します。

4.1 Renderなどのサーバーでの環境変数設定

  1. Renderのダッシュボードにアクセスし、該当するアプリケーションを選択します。
  2. メニューの「Environment」を選択し、以下の環境変数を追加します。
    • BASIC_AUTH_USER: admin
    • BASIC_AUTH_PASSWORD: password

5. Basic認証の制限と注意点

Basic認証は手軽に導入できる認証方式ですが、以下のような制限があります。

  • 認証情報はBase64でエンコードされて送信されるため、暗号化されていません。SSL/TLSを使用して通信を暗号化することが推奨されます。
  • ログアウトの概念がないため、セッション管理が難しい場合があります。

このガイドを参考にして、開発中のWebアプリケーションやポートフォリオにBasic認証を導入してみました。

※セキュリティ関連のため今回は実際のコードをお見せすることができません💦

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?