「認証と認可の違いってわかる?」
こう聞かれて正直わからなかったので調べてまとめました。
認証とは
認証(Authentication)とは「あなたが誰か」を確認することです。
認証ではあなたにどんな権限があるかは関係ありません。単純にあなたが誰なのかを確認します。
現実世界の具体例
- オフィスのゲートに会員証をかざして入館する
- 警察に職務質問されたので身分証を見せる
webの具体例
- メールアドレスとパスワードを入力してアプリにログインする
- 指紋認証や顔認証でスマートフォンのロックを解除する
認可とは
認可(Authorization)とは「あなたに権限があるか」を確認することです。
認可ではあなたが誰であるかは関係ありません。あなたが行うことに対してその権限があるかを確認します。
現実世界の具体例
- 機密情報を保管する部屋に入れる許可があるかをチェックする
- お酒やタバコを買うときに20歳以上であることを証明する
webの具体例
- スプレッドシートの編集権限があるので編集できる
- 管理者権限のユーザーでログインしているので他のユーザーを新規作成や編集できる
ステータスコードでの認証と認可
HTTPステータスコードの401と403も、認証の失敗か認可の失敗かに分けられます。
401 (Unauthorized)
英語名が認可と似ていてで紛らわしいですが、認証の失敗を表すステータスコードです。
ログイン画面でメールアドレスかパスワードが間違っていてログインできなかったときのエラーに当たります。
403 (Forbidden)
認可の失敗を表すステータスコードで、閲覧禁止の意味もあります。
ログインをした後に、直接URLを入力したり、バグで意図しないページにアクセスしたときのエラーに当たります。
まとめ
認証と認可についてまとめました。
認証は「あなたが誰か」を確認して、認可は「あなたに権限があるか」を確認します。
エラーコードで表すと認証エラーが401、認可エラーが403になります。
コメント