##背景
OAuth2.0について勉強している際に、認証と認可という概念があることを知りました。
未だに混同してしまうことがあるので、「認証と認可の違い」に重点を置いて整理してみました。
それぞれについて詳しい情報が知りたい方は 参考資料 をご確認ください。
また、理解に誤りがあれば、訂正いただけると嬉しいです。
##言葉の定義
###認証
「誰であるか」を実証するための過程。
英語では、Authentication または AuthN と表記される模様。
認証には下記の3つの要素があるそうです。
今回の趣旨からは逸れるので、詳細の説明については割愛します。
- What you are (inherence factor)
- What you have (possession factor)
- What you know (knowledge factor)
###認可
「特定の権限を持つこと」を実証するための過程。
英語では Authorization または AuthZ と表記される模様。
##日常生活で例えてみると...
###認証
- 警察から職務質問された際に、身分証の提示を求められる
※純粋に「誰であるか」を問われていることがポイント
###認可
- レンタカーを借りる際に、免許証の提示を求められた
- 学生割引を受ける際に、学生証の提示を求められた
- 市役所で親の印鑑登録を行う際に、委任状の提示を求められた
- 銀行で「子供の銀行口座」を解約する際に、委任状の提示を求められた
※「誰であるか」ではなく、「権限を持っているか」を問われていることがポイント
##代表的な方法
###認証
・Basic認証(ID/Password)
・生体認証 などなど
###認可
- OAuth2.0
- APIKey などなど
##(私見) なぜ認証と認可を混同しやすいのか
多くの場合は、認証されることで「権限を持っていること」についても実証することができます。
そのため、認証と認可を個別に考えた場合に混同しやすいのではないかと思います。
##参考資料
Getting Started with OAuth2.0
よくわかる認証と認可
OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る - 認証と認可