Basic認証とフォーム認証

  • 投稿日:
  • by
  • カテゴリ:
  • ハッシュタグ:

ちょっと認識が浅かったようです。

まず「原則的にBasic認証はログアウトできない」です。 これはタブを閉じただけではダメで、ブラウザを終了させない限りは認証した状態が続くようです。

Cookieを使って擬似的にログアウトを実現する方法もあるらしいのですが、ゲスト(認証前状態)でのアクセスなどをしたい場合は、普通はフォーム認証を使うのだそうです。

「AjaxでBasic認証」が出来るのだから、当然フォームからIDとパスワードを送れると思っていたのですが、Basic認証ではブラウザのログインダイアログでないとダメなのか...

「プランB」の場合は社内のみの利用で、利用者はみなIDを持っていますから、ゲストで使う必要はありません。 PCもほぼ一人一台ですから、他人のIDでの成りすましはあまり考えなくていいかな。 「使い終わったらブラウザを終了してください」と周知徹底すればいいのだし。
IDによる厳密な権限制御が必要なわけじゃないので、簡単な認証でいいんですよね。

ただ、ブラウザのログインダイアログは素っ気無いので、できれば自分でデザインしたフォームにしたいなと思ったわけです。 せっかく作ったんだし。
とりあえずパスワード変更だけでも、jQuery UI Dialog を使おうと思います。


ところでこれまで Apache と ブラウザ側(jQuery)だけで Basic認証 をしようとしてきたんですが、PHPを使うともっと簡単なんですね。

なにより、ログイン名とパスワードを簡単に得られるのが素敵です。 画面の片隅に現在のユーザー名を表示したり、パスワードが空の場合に新しいパスワードの入力を促したりできますもんね。

Basic認証前のゲストアクセスも出来そうです。 Basic認証するためのPHPファイルを、「サインイン」なんて文字にリンクを張っておけばいいみたい。 

MySQLとのユーザー情報の照合も、PHPから行なった方が柔軟性がありそうです。 たとえば、パスワードの変更日をテーブルに記録しておいて、3ヶ月ごとに更新を促すなんてのも、PHPならわけないですし。
mod_auth_mysql が XAMPP に含まれなくなったのは、「PHPとMySQLが入っているんだから、そんなの要らないじゃん」ということなのかもしれません。

で、よくよく考えてみれば、PHPとMySQLで照合するなら自作のフォームから投げたっていいような気がします。 その場合は、Basic認証みたいにブラウザが自動的に認証情報を投げてはくれないので、CookieかPHPのセッションを使う必要がありますね。 つまりはフォーム認証になるということか。
「WebTecNote」さんのサンプルが参考になりそうです。

うーむ。 もう少し頭の整理が必要みたいです。