OAuth 2.0 クライアント認証を軽く解説してみた!

前説

訳あってOAtuthの勉強をしています。
OAuthとは診断メーカーやBotのログインに
Twitterアカウントを使うあの機能です。
Webアプリ開発でもOAuth認証を使うことがありますので、
備忘録として記しておきます。

OAuthについて突出して分かりやすい記事

図などが添付されており、間違いなく分かりやすいです。

qiita.com

qiita.com

軽い解説

上記の記事を読んで、簡単に説明すると。
登場人物は

  • クライアント
  • サーバー(リソースサーバー)
  • 認証サーバー
  • ユーザー

クライアント「リソース鯖君、APIを通じてデータくれや」

クライアント側からサーバーへAPIを通じてデータの獲得を試みます。
しかしサーバーも危険なクライアントにデータを渡すわけにはいきません。

クライアント「認証鯖君、リソース鯖にリクエストしたいから、アクセストークンくれや」

そこでクライアントは認証サーバーに、アクセストークンを発行してもらいます。
アクセストークンとは免罪符みたいなものです。

認証サーバーに発行してもらったアクセストークンを持って、

リソースサーバーのAPIにリクエストすると、
リソースサーバーの方で「認証鯖君から認証もらってるやんけ!お前は正常やな」と認可されます。

認証鯖「ユーザー、おたくのクライアントがアクセストークン欲しいて言ってきたけど」

しかしクライアントが勝手に(乗っ取られたり)
認証サーバーからアクセストークンを取得して、
リソースサーバーにAPIを叩かれても困ります。

そこで認証サーバーはクライアントにアクセストークンを付与する前に、
ユーザーに対して「お前のクライアントがアクセストークンくれと言ってきたけどええか?」と尋ねます。
その結果、ユーザーは「ええで」と返信すると、
クライアントにアクセストークンが付与されます。

今後

今はユーザーが存在する場合ですが、
バイスがクライアントの場合、どういった認証処理がなされているのか
今後調べていきたいと思います。