・マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!
・レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!
・JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!
認証と認可の違い、説明できますか?
皆さん、こんにちはどんぶラッコです。
先日、”認証と認可”というテーマで調べ物をしていたのですが、この説明がとても分かり易いなー、と思いました。
認証と認可の話、こういう説明されるとわかった気になるhttps://t.co/RFUdf6lvJT pic.twitter.com/6c4gKmpVNd
— どんぶラッコ (@don_bu_rakko) August 5, 2019
ただ、認証と認可の違いについてわかっていない人にとっては、「え…?え……??」という状態だと思います。
「ってゆーかそんな些細な違い関係なくない?」
とかも言われてしまいそうです。
ということで今回は、例え話を通じて認証と認可の違いについて理解しちゃおう!のコーナーです。
例え話で理解しよう!
ここでは、運転免許証の使い方を例にとって説明します。

運転免許証の提出を求められる場面はたくさんあります。
そして、その使われるシチュエーションによって認証と認可の説明ができちゃうんです!
ということで、早速例え話を掲載しちゃいましょう。迷った時はこの例えを思い出せばOKです!

認証とは
さあ、それぞれ解説していきましょう。まずは認証から。
よく「パスワード認証」という言葉を聞くのではないでしょうか。
メールアドレスとパスワードを入力することで、ログインすることができるあれですね。
これ、何をしているかというと、本人確認、つまり「何者なのか」がポイントになるわけです。
では、先ほどの例でみてみましょう。
具体的にはこんなフローになります。

銀行口座を作る時は、その人が本人であるかどうかを確認するために免許証が使われていますね。
認可とは
では、今度は認可の例をみてみましょう。
認可の場合は許可なのです。つまり、その動作をする人が「誰なのか」ではなく、「どんな人か」という属性に応じて許可を出すのです。
これも、例え話でのフローをみてみましょう。

免許証の提示を求められている点は同じですが、ここで店員さんが確認しているのは「20歳以上か否か」という属性だけです。
お酒を飲むのが佐藤さんなのか鈴木さんなのか、そういったことは全く関係ないのです。
冒頭でご紹介した例に戻ると…
ここまでくると、冒頭でご紹介したスライドの意味が理解できるのではないでしょうか。
401 は Unauthorized、つまり何者かわからないから接続しないよ、という意味です。
たいして 403 は Forbidden。ファイル自体は存在するんだけど、閲覧を許可する属性を持っていないよ、ということです。
ちなみに、引用元の動画自体は2017年のものですが、かなりわかりやすくOAuthについてご紹介されているのでおすすめです。興味のある方は是非ご覧ください!
以上、混同しやすい認証と認可の違いについて、整理してみました。
ちなみに、認証の部分で「本人確認として免許証を提出」というフローでご紹介しましたが、「免許証はあるけど本当に本人なの?なりすましじゃないの?」なんて疑問もありますよね。
その疑問を解決するために、多要素認証という考え方があります。
認証をする際に、
- ユーザが知っていること
- ユーザが持っているもの
- ユーザ自身の特徴
のうち、2つ以上の要素を組み合わせるとセキュアですよ、という考え方です。
パスワード認証はユーザが知っていることですね。
今まさに話題の二段階認証などもこの考え方に基づいた仕組みなので、また別の機械にご紹介したいと思います!