第10回 会員認証 - OOP講座
がる先生のOOP講座
Lecutures on PHP
第10回 会員認証 (その1)
10. 会員認証
そろそろこのフレーズも懐かしくなって…はきませんが、上司からの相変わらずのmailです。
<<メール>>
大分こなれてきたし、そろそろ会員制のBBSも作りたいんでよろしく。
よろしくの一言で片付けられても色々困るのですが。
とはいえ、どうせ今までの流れから考えても「やらないでいい」という選択肢は存在しなさそうなので、ここは前向きに「色々学べる」とか思いつつ、少しまじめに考察をしてみましょう。
さて、ここで「認証」という言葉を気軽に使っていますが、実は、全く異なる2つの意味が混在しているのを皆様はご存じでしょうか?
英語だと、authentication と authorization という、2つの、それぞれ「異なる概念」が存在します。
まず authentication ですが。
この概念が指し示すのは「アクセスをしてきた人が誰なのか」を特定するという概念です。
古くからあるあたりですと ID+Password なんてのがこの概念ですし、バイオメトリクス(生体認証)も、この中に含まれます。
日本語訳でも普通に「認証」と書かれることが多いですが、それ以外ですと確証とか証明なんていう訳を見かける事も時々あります。
次に authorization ですが。
こちらは、許可、公認、承認、認可、なんて訳語が当てられる事が多いようです。
この概念が指し示すのは「一回目にアクセスをしてきた人と二回目にアクセスをしてきた人とが同一である」ことを保証する機能になります。
PHPが元々もつsession関数群での「認証」というのは、この概念を指し示します。
また、いわゆる「セッションID」という概念は、ここに属する考え方になります。
もう少し、深く切り込んで理解を深めてみましょう。
一般的に認識されている「認証」というのは、authentication と authorization との組み合わせになります。
まず初めに authentication によって「うちの会員であるAさん」だということを把握します。
また、あわせて authorization として「このアクセスもとに(一時的に)a94aという識別番号を付与」しておきます。
次のアクセスにおいて、authorization の世界観で「このアクセスもとは、先ほどa94aという識別番号を付与したアクセス元である」ことを理解し、そこから辿って「現在、Aさんがアクセスをしている」ことを理解します。
認証、と一言で片付けがちな機能ですが、裏側では、意外といろいろな事をやっているわけですね。
せっかくなので、もう少しだけ認証について、横に話を広げてみましょう。
いわゆる「BASIC認証」と呼ばれる認証は、authentication のみで構築されています。
そのあたりは、筆者のセキュリティ講座の第三回を見ていただけるとわかるかと思います。
アクセス解析や、一部のアンケート/投票系の認証では、authentication は行わずに authorization のみ、というケースがあります。
筆者は「匿名認証(anonymous auth)」なんていう言い方をする事もありますね。
「誰かは問わないが、アクセスもとがユニーク(単一)であることを保証する」といったニュアンスになります。
つまり、「認証機構が欲しい」場合、上述を色々と考慮したりヒアリングしたりする必要があります。
とはいえ、大抵の場合「authentication + authorization」ではあるのですが。
また、ここでもう一つ。
今回はあまり使わないのですが、PHPでは「セッション変数」と呼ばれるものがあります。
このセッション変数はauthorizationに紐尽くものになりますので、匿名認証でも難なく用いる事ができます。
このあたりも少しだけ、知識として記憶しておくと、何かのタイミングで楽が出来る・・・かも、しれません。
さて、上述を考えた上で、まずはざっくりとしたクラス設計をしてみましょう。
- 1
- 2





ページのトップへ


今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!