LINEで現役エンジニアに直接質問してみよう!登録無料

アプリケーションの認証と認可の違い | 「OAuth認証」は間違い、「OAuth認可」こそ正しい

Railsでアプリケーションを作ろうと思った時、ユーザー認証の実装でつまずく人が多いのではないでしょうか?

その中でも、「認証」と「認可」の違いで混乱している人も多いのでは?

「いろいろ資料を見ているけど、いまいち違いがよくわからない」 「上司からユーザー認証の実装を頼まれたけど、理解しづらくて難しいと感じている」 「OAuth認証とOAuth認可の違いがよくわからない」

そんな疑問にお答えします。

認証と認可の違い

認証と認可の違いをまとめるとこのようになります。

用語 内容
認証
Authentication
であるか
認可
Authorization
誰が誰にどんな権限を与えるか

認証(Authentication)とは?

認証とは、一言で言うと「本人確認」です。

アプリケーションサービスを使っているのは誰なのか?を特定します。誰かを特定する方法は問いません。 通常は「email」と「パスワード」がよく使われますが、指紋認証や虹彩認証等の生体認証、ワンタイムパスワードを使った2way認証、クライアント証明書を使った認証など、「誰か」を特定する方法はいろいろあります。

認可(Authorization)とは?

認可とは、「本人確認し、その人に誰がどのような権限を与えるかを決める事」です。 つまり、「認可」には「認証」が含まれています。

「OAuth認証」は間違い、「OAuth認可」こそ正しい

ユーザーログインについて実装しようと、いろいろな資料を見ると「OAuth認証」と書かれていることがよくあります。 これこそ、開発者を混乱させてしまう原因になっています。

本来、「OAuth」は認可のための仕様であって、認証を行うためのものではありません。 しかし、先程説明したとおり、認可には認証が含まれているので、「OAuth認可」を使って認証をしてしまおう!と考える人がおり、 そこから「OAuth認証」と言われる言葉が生まれたのでは無いかと思われます。

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。