Shikata Ga Nai

Private? There is no such things.

OAuthによる認証とは?

Hello there, ('ω')ノ

多くのWebサイトで見かける「Googleアカウントでログイン」「SNSでログイン」というボタン。この仕組みの裏側で使われているのが、OAuth 2.0を応用した認証(Authentication)です。


🎯 本来のOAuthと認証への応用

OAuthはもともと「他のアプリに自分のデータへの限定的なアクセスを許可する」ための認可(Authorization)の仕組みです。

しかし、実際には以下のようにログイン機能としても使われるようになりました:


🔐 OAuth認証の仕組み(SSO的な使われ方)

  1. ユーザーが「SNSでログイン」などを選択  → クライアントアプリはSNS(例:Facebook, Google)のOAuthサーバーにリクエストします。

  2. SNS側のログイン画面が表示される  → ユーザーがSNSのアカウント情報でログインし、アクセス許可を与えます。

  3. クライアントアプリがアクセストークンを受け取る

  4. アクセストークンを使って /userinfo API にアクセス  → ユーザーの基本情報(例:メールアドレス)を取得します。

  5. 取得した情報をもとにログイン処理  → 通常のユーザー名・パスワードによるログインの代わりに、アクセストークンと取得した情報を使ってユーザーを認証します。


🧩 SAMLとの違い

OAuth認証は、SAML(企業向けのシングルサインオン)と似た動きをしますが、OAuthは主にAPIやモバイルアプリで使われる軽量な仕組みです。


🧠 注意点:OAuthは“認可”であり、“認証”ではない

OAuth自体はユーザー本人確認を保証するものではありません。そのため、実装ミスによる脆弱性も発生しやすく、以下のような攻撃に利用されることがあります:

  • 他人になりすましてログインできてしまう
  • 本来アクセスできない情報を取得される

Best regards, (^^ゞ