OAuthについて仕組みや内容を調査してみた

インフラ, セキュリティ, 開発セキュリティ


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105
開発をしていて認証に関する部分を実装することになり、oAuthという言葉が出てきたが、内容を詳しく知っているわけではなかったので、今回調べてわかったことなどをまとめていくことにしました。

OAuth

OAuth とは

OAuthとは、SNSやWebサービス間でアクセス権限の認可を行うためのプロトコルのこと。

OAuthのバージョン

OAuth 1.0とOAuth 2.0があるが、現在ではOAuth 2.0が標準化されている

OAuthの利用例

まずOAuthがどのようなところで使われているのかを調査したいと思います。SNS間の連携で使われる場合があります。
Instagramで共有した内容を他のSNSであるFacebookなどでも連携して投稿できる機能などでも使われているようです。また、SNSアカウントを用いて他のサービスのログイン等を行える機能もたくさんあると思いますが、そちらもOAuthが使われているようです。

認証と認可

  • 認証
認証は 英語でAuthenticationであり、通信の相手が誰であるかを確認することである。
  • 認可
認可は英語でAuthorizationであり、特定の条件に対して、リソースアクセスの権限を与えることである。

認可サーバー

アプリケーションでユーザーの持つデータを保管するサービスが存在している。そのサービスに対して、データを利用するためのリクエストを送ることになる。ユーザの持つデータを保管するリクエストを受ける側の別のサービスが認可サーバーになる。

認可サーバはリクエストに対し、アクセスを許可する認可情報であるアクセストークンの発行をして良いかユーザーに確認し、確認が取れればアプリケーションにアクセストークンを発行します。

リソースサーバーとクライアントアプリ

リソースサーバー

リソースサーバーは、ユーザーの持つデータを保管しているサービスである。こちらのサービスが、認可サーバーとしての機能も持っている

クライアントアプリ

ユーザーがデータを再利用したい別のアプリケーションをクライアントアプリといいます。

手順

  • クライアントアプリが、リソースサーバーに対してデータの再利用をアクセストークンを渡し、リクエストを送る。
  • リクエストを受け取ったリソースサーバー側で、アクセストークンの信頼性を検証し、問題がなければデータをクライアントアプリに渡す。

クライアントの登録

認可サーバーでクライアントアプリの登録が必要.