0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】指定のページにDigest認証を実装

Posted at

はじめに

今回本番環境にて外部APIへ疎通確認しなければならない事象が生じたため、
あるページにのみダイジェスト認証を設けた。

Digest認証用のパスワードファイルの作成

サーバーにてhtdigestコマンドを用いてパスワードファイルを作成します。

$ sudo htdigest -c /var/www/html/.digestpass "Digest Auth" yamato

# コマンドの説明:sudo htdigest -c {ファイルパス} '{領域名}' {ユーザー名}

※ファイルの場所は任意の場所、領域名も任意

以下のコマンドでファイルが作成されたことを確認。

$ cat /var/www/html/.digestpass
yamato:Digest Auth:bce31c0fdafwerkjlwr8cdda656f24b23nifer

アクセスを制御する.htaccessを編集

Laravelプロジェクトの場合は/public配下にある。
任意の場所に下記を追記。

.htaccess

<IfModule mod_rewrite.c>

中略

AuthType Digest
AuthName "Digest Auth" #領域名
AuthUserFile "/var/www/html/.digestpass"
Require valid-user

</IfModule>

これでユーザー名とパスワードを求められるが全てのページに認証がかかってしまいます。
ここで本題の指定のページに認証かけるならパスで条件を加える方法です。

以下を追記します。

.htaccess

<IfModule mod_rewrite.c>

中略

# AllowかRequireいづれかでアクセス許可
Satisfy Any

AuthType Digest
AuthName "Digest Auth"
AuthUserFile "/var/www/html/.digestpass"
Require valid-user

# /connectでDigest認証を求める
SetEnvIf REQUEST_URI "^/connect" restricted_url
Order allow,deny
Allow from all
Deny from env=restricted_url

</IfModule>

これで/connectでアクセスしたときのみ認証を求められるようになり無事完了!

指定のページに認証を設けるのにbladeファイルのディレクトリに設定ファイル作成?
などさまざま遠回りしながらたどりつきました(^ー^;

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?