2019年9月~29歳で未経験から営業→エンジニアになった私が、
脱未経験エンジニアを目指して、業務の中で学んだこと、会社の業務について書いています。
私の現状については最初の投稿をご参照ください。
[最初の投稿]
会社でふと「認証」と「認可(承認)」というワードが出てきて、
ぼんやりと分かっているつもりで、
いざ説明するとなるとできないし、これは理解していない!ということで調べてまとめて見ました。
OAuthなどを扱うと両方出てきます。
「認証」と「認可(承認)」
認証と認可(承認)の2つは密接に関係はしていますが、それぞれ別の概念です。
密接に関係しているので、深く学ぶと難しいのですが、
今回はこの2つの違いについて、簡単に説明して行こうと思います。
認証とは
認証:Authentication
**「誰であるか」**を確認、実証することです。
実生活でイメージすると身分証明証で「本人確認」をするようなものです。
webの世界だとログインIDとパスワードでどのユーザーかを確認する処理が認証に当たります。
生体認証なんかも「誰か」を確認するものですよね。
iPhoneのFaceIDとか。
認可(承認)とは
認可(承認):Authorization
英語にするとわかりやすいですが、**権限(Authority)**についての概念。
つまり、**「ある特定の権限を持っているか」**を確認、実証することです。
実生活では、コンビニでお酒を買う際に身分証の提示を求められる行為が認可に当たります。
こちらの身分証提示は認証とは違い「20歳以上でお酒を購入できる権限を持っているか」の確認です。
役所などに代理手続きに行った際に、委任状の提示を求められるのも、
代理で手続きをする権限があるかの確認で、認可にあたります。
「誰か」ではなく、「権限」があるかです。
webの世界だと、ユーザーに有料コンテンツの閲覧の権限を与えることが例として挙げられます。
「課金をした人のみ閲覧できます」というものですね。
ただ、こういったサービスになると、「誰」で、「閲覧権限を与えるか」という2つの要素が絡み、
認証して、認可という流れになります。
冒頭で述べましたが、別の概念ではありますが、webサービスとなると2つが密接に絡みあって構成される場合があります。
このあたりの内容はまた別で書こうと思います。
最後に
とりあえず今回は、
・認証:「誰であるか」の確認、実証
・認可(承認):「ある特定の権限を持っているか」の確認、実証
この2つの違いを説明しました。
改めて考えてみると当たり前なのですが、
しっかりと、説明しろ!と言われたらパッとできない方もいたのではないかと思います。
ぼんやりと理解していることを明確にして、確実な知識にしていきたいです。
拙い説明でしたが、
最後まで読んで頂きありがとうございました!