質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

0回答

1519閲覧

Basic認証でタイムアウト機能を実装すると複数回認証が行われてしまう

kouki0611

総合スコア8

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

1グッド

0クリップ

投稿2022/06/21 01:58

現状

WEBサイトにて、簡易的にログイン機能を持たすためにベーシック認証を利用しており、その際に1分以上無操作だった場合は、再度ベーシック認証の処理が走るようcookieを利用しタイムアウト機能を実装しております。
しかしそちらの処理を行うと、2回連続でベーシック認証の処理が走ることがあり入力が手間になってしまう(特にスマホだと)ので、そちらを改善したいと思っております。

  

確認できていること

PC Chrome →最初の1回目のみ2回認証があり、その後は1分無操作だった場合は再度認証(こちらは想定している動きとなります)

PC Chrome(シークレットモード)→必ず初回2回認証処理が走るので、初回アクセス時は2回認証が起こってしまうということは理解いたしました。

iPhone Chromeとsafari両方 → 最初の1回目は2回認証があり、その後少時間は1分無操作だった場合のみ再度認証が1回だけ起こる。(ここまでは想定している動きとなります)しかし半日程度過ぎた頃にアクセスすると再度2回認証が起こってしまう。

httpからhttpsのリダイレクトは行っているので、そちらのせいで2回処理が行われているかと思ったのですが、httpで初回アクセスすると3回認証が起こるので、リダイレクトの影響とは別で2回処理が動いているかと思います。

  

ソースコード

参考サイト:https://blog.aleajactaest.org/article_4yexqaxepfclfptpmwjjxiluvm.html
上記サイトを参考に(そのまま利用させて頂いております)実装しております。

RewriteEngine On RewriteCond %{HTTP_COOKIE} !LOGIN=([^;]+) [NC] RewriteRule ^.*$ - [E=FORCELOGIN:1] # ドメインと設定したい有効時間(分)を入れる ※以下は1分無操作で再入力を催促させる RewriteRule ^.*$ - [CO=LOGIN:1:XXXX.com:1:/] <If "%{ENV:FORCELOGIN} = 1"> AuthUserFile /dev/null </If> <Else> # .htpasswdを置いた場所 AuthUserFile /home/.htpasswd </Else> AuthName "Member Site" AuthType BASIC require valid-user

  

実現したいこと

流れとしては参考サイトに書いてある下記でなんとなく理解できているのですが、なぜ2回処理が行われてしまうのかが理解できておりません。
そちらを理解し、2回処理が走ってしまうのを防ぎたいと思っております。

1.LOGINってCookieが存在しなければ、FORCELOGIN環境変数をセット
2.LOGIN Cookieを設定(これによって、2回目(BASIC認証情報入力後)のアクセス時は、1が満たせなくなって、3もスキップされる)
3.FORCELOGIN環境変数が存在すれば、AuthUserFile で指定するユーザー認証ファイルを/dev/nullにして全ユーザーの認証が通らないようにする(これをするのにIF構文を使っているので2.4以降が必要)
4.Cookieには10分の有効期限付きなので、10分間アクセスが無ければCookieは失効して、1の処理が走り、3で強制的に認証させられる

  

知識不足で大変申し訳ないのですが、ご教授頂けますと幸いです。 

aaabbbsss👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問