🐙

認証認可に対する勘違い

2022/05/25に公開

はじめに

本記事では、僕が「認証認可」に対する勘違いしていた内容をまとめております。
本記事では、技術の説明などはしておりませんのでご注意ください。

認証認可とは

  • 認証(Authentication)・・・「Aさん」が「Aさん」である証明をし、承認されること。
  • 認可(authorization)・・・「Aさん」がある動作をする際に、許可されること。
    ざっくり簡単に例を出すと、

僕が居酒屋でお酒を飲もうとした際に、お店の人に年齢確認をお願いされました。保険証をお店の人に見せましたが、顔写真が無いため本人確認ができないと却下されました。ですので免許証を見せたら本人確認はクリアしたのですが、年齢が19歳と発覚したためお酒は飲めませんでした。

この本人確認が「認証」であり、お酒を飲んでいいかを許可するのが「認可」になります。
この先は認証認可をAuthと略していきます。

何を勘違いしていたのか

  1. 「ユーザID」と「パスワード」が盗まれても、Authでセキュリティが担保されている。
  2. ログイン機能が無いwebアプリには、Authは必要ない。

??????という感じですよね。
色々勉強していく上で「なぜAuthが必要なのか」を考えた時に、上記の2つが間違っていることに気付くことができました。

なぜAuthが必要なのか

そもそも「なぜAuthが必要なのか」をしっかりと僕は認識出来ておりませんでした。「セキュリティ的に必要なのだろう」ぐらいに思っていたので、「ログイン機能」を追加しようとしたときにやたらめったらAuthの話が出てきて「なんじゃこりゃ」状態でした。「ログイン機能」を追加したいだけなのになんでこんなにAuth出てくるの😭
ここで「ログイン機能」の話をすると長くなるので割愛しますが、「なぜAuthが必要なのか」ということに気付いたのかというと、何気なく作成していたGraphQLサーバからデータを取得してる時に、「あれ?もしかしてこのままいくと誰でもデータ取得できるじゃん...。だからAuthが必要なのか!」ということです。これに気付いたことによってモヤモヤしていた部分や、勘違いしていた部分が晴れてスッキリしました。

まとめ

webアプリを作成する際に、「何が必要」で「なぜ必要」なのかをしっかりと考えるのが大事だなーと思いました。自分で考えて作成していくの大事だ😩

Discussion