「予約をネットで受けられるようにしたい」
「スタッフが自分のスマホからシフトや予約を確認できるようにしたい」
こうした仕組みを作るとき、ほぼ必ず必要になるのがログイン機能です。
そしてログイン機能を考えるときに欠かせないのが、「認証」と「認可」という2つの考え方です。
名前が似ていてまぎらわしいのですが、この違いを知っておくだけで、制作者との打ち合わせがぐっとスムーズになります。
この記事では、エンジニアではない店主・担当者の方に向けて、発注前に知っておくと得をするポイントをまとめました。
認証と認可、ひと言でいうと?
認証(本人確認)は、「あなたは誰か」を確かめることです。
会員証を見せる、パスワードを入れる、といった手続きがこれにあたります。
認可(権限の確認)は、「あなたは何をしてよいか」を決めることです。
会員証を持っていても、スタッフ専用の部屋には入れない。これが認可です。
お店にたとえると、入口で会員証を確認するのが認証、会員でも入れる部屋と入れない部屋があるのが認可です。
| 認証(Authentication) | 認可(Authorization) | |
|---|---|---|
| 確かめること | あなたは誰か | あなたは何をしてよいか |
| たとえ | 入口で会員証を確認する | 部屋ごとに、入れる人を決めておく |
| 失敗するとどうなる | 他人になりすましてログインされる | ログインした人に、見せてはいけない情報まで見えてしまう |
ポイントは、認証が済んでも、それで何でも見てよいわけではないということです。
「誰か」がわかったうえで、「その人に何を見せるか」を別に決める必要があります。
お店のシステムだと、どこで出てくる?
認証と認可は、お店や会社で使う身近な仕組みのあちこちに出てきます。代表的な3つの例を見てみましょう。
予約システム
お客様はログインすると、自分の予約だけを確認・変更できます。
他のお客様の名前や予約時間は、どこを押しても見えないように作ります。
スタッフ用の管理画面
スタッフは予約の一覧を確認できますが、売上や給与は店長だけが見られるようにします。
同じ管理画面でも、ログインした人の役割によって、表示するメニューや情報を変えるのが一般的です。
会員ページ・ポイント
会員は自分のポイント履歴だけを見られます。
ポイントを付けたり取り消したりする操作は、お店側の担当者だけができるようにしておきます。
「ログインできる」だけでは足りない理由
エンジニアの間では、「認証・認可の設計を見れば、そのエンジニアの実力がだいたい分かる」と言われるほど、作り手によって差が出やすい部分です。
ログイン画面を作ること自体は、今はそれほど難しくありません。
差が出るのは、うまくいかなかったときの動きです。たとえば、次のような場面です。
- パスワードを何度も間違えたとき、制限がかかるか
かからないと、パスワードを片っ端から試される危険があります - しばらく操作しなかったとき、自動でログアウトされるか
お店の共用パソコンで、開きっぱなしの画面を別の人に見られることがあります - ページのアドレス(URL)の数字を書き換えただけで、他人の予約が見えてしまわないか
「予約番号101」を「102」に変えたら、別のお客様の予約が表示された、という形です - 辞めたスタッフのアカウントを、すぐ止められるか
止められないと、退職後も外から情報を見られる状態が続きます
特に3つ目の「URLの数字を変えたら他人の情報が見えた」は、実際の情報漏えいでよくある原因のひとつです。
ログイン(認証)はきちんとしていても、「この予約をこの人に見せてよいか」の確認(認可)が抜けていると起きてしまいます。
「Googleでログイン」「LINEでログイン」は何をしている?
最近よく見る「Googleでログイン」「LINEでログイン」のボタンは、他の会社のログインを借りる仕組みです。
お客様はGoogleやLINEで本人確認を済ませ、お店のシステムはその結果を受け取ります。
お店側はお客様のパスワードを預からずに済むので、管理の負担と、パスワードが漏れるリスクを減らせます。
この仕組みの土台には、OAuth(オーオース)という技術があります。
OAuthは本来、「他のサービスに、決めた範囲だけ使ってよいと許可する」ための仕組みです。
これをログインそのものに使う場合は、その上にOpenID Connectという仕組みを重ねています。
店主の方が覚えておくのは、次の2点で十分です。
- ボタン1つで登録できるので、お客様の手間が減る
- GoogleやLINEのアカウントを持っていない人向けの入口も用意する
メールアドレスで登録できる方法を残しておくと、取りこぼしがありません
エンジニアの方へ:OAuthの仕組みをしっかり学びたい場合は、『OAuth徹底入門』(翔泳社)が定番の1冊です。
発注前に制作者へ聞きたい5つの質問
予約システムや会員ページ、管理画面を頼むときは、打ち合わせで次の5つを聞いてみてください。
専門知識がなくても、答え方で制作者の考え方がよくわかります。
- スタッフごとに、見られる画面を分けられますか?
店長・スタッフ・アルバイトなど、役割ごとに見られる情報を変えられるかを確認します。 - 辞めた人のアカウントは、こちらですぐ止められますか?
制作者に連絡しないと止められない作りだと、対応が遅れがちです。 - パスワードを忘れたお客様は、どうやって再設定しますか?
本人しか受け取れないメールなどで、安全に再設定できるかを確認します。 - パスワードを何度も間違えたとき、ロックはかかりますか?
一定回数でしばらく試せなくなる仕組みがあるかどうかです。 - URLを書き換えても、他の人の情報が見えないことを確認していますか?
「作った」だけでなく、「確認した」と答えられるかがポイントです。
答えがすぐ返ってくる制作者なら安心です。
あいまいな答えが続くようなら、契約の前に一度立ち止まって考えましょう。
Linplanの代表は、システムエンジニアとして開発の現場を経験してきました。
ホームページだけでなく、予約や会員管理などのアプリも、ログインや権限の設計まで含めてご相談いただけます。詳しくは私について・サービス紹介をご覧ください。