RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

OAuthについて、超基本をまとめてみる

f:id:tech-rakus:20200814154306p:plain

はじめに

こんにちは。Engawaです。
最近の業務でOAuthについて触れる機会がありました。
それまでの業務では担当経験はなく全く仕組みを理解できていなかったため、これを機に仕組みについてちょっと学習してみました!
参考にした書籍は以下になります。

https://www.amazon.co.jp/dp/484437818Xwww.amazon.co.jp

OAuthとは

OAuthとは「サードパーティアプリケーションによるHTTPサービスへの限定的なアクセスを可能にする認可フレームワーク」です。

上記だけだと意味が分からないので、画像編集アプリを例にします。
画像編集アプリでGoogle Photo上の画像を編集する際、ログインアカウントにはGoogleアカウントを使いたい場合を考えてみましょう。

f:id:Engawa:20200810161524p:plain 

  • サードパーティアプリ→画像編集アプリ
  • HTTPサービス→Google Photo
  • 限定的なアクセス:ユーザーが許されている操作は画像のダウンロードのみで、それ以外の操作をしようとした場合は、HTTPサービスはアクセスを拒否しなくてはならない
  • 認可フレームワーク:アクセストークン発効方法のルール(全てのアクセスに対して、許可していいアクセスかどうかをアクセストークンを用いて判断する。)

上記の例を踏まえてOAuthの「サードパーティアプリケーションによるHTTPサービスへの限定的なアクセスを可能にする認可フレームワーク」を言い換えると
『画像編集アプリによるGoogle Photoへの限定的なアクセスを可能にするための「アクセストークン発効方法のルール」』となります。

各役割の関係性

各役割

OAuthの基本的な役は大体以下の4つになります。
f:id:Engawa:20200811220514p:plain

  • リソースオーナー
    • リソースの所有者。サードパーティアプリにリソースへのアクセス権限を委譲しており、決められた権限の範囲内でリソースへのアクセスが可能になります。


  • クライアント
    • 保護されたリソースにアクセスしようとするアプリケーション。


  • リソースサーバー
    • データや機能を提供するサービス。一般的にはWebAPIの形で提供されている。
    • リソースサーバーはリソースオーナーが許可したアクセスを受け入れる必要があり、その手段がアクセストークンとなります。
    • アクセスのたびにアクセストークンの確認を行い、許可していいアクセスかどうかを判断する。


  • 認可サーバー
    • 認可サーバーの機能は以下の3つになります
      • リソースオーナーを認証する(ログインの認証ではなく、リソースのオーナーであることを確かめるための認証)
      • クライアントのリソースへのアクセスについてリソースオーナーの同意を得る
      • アクセストークンを発行する
    • 上記例だと、リソースオーナーがGoogleアカウントにログインし、「画像編集アプリがGoogle Photoにアクセスすること」について同意すると、クラアントに対してアクセストークンを発行します。

それぞれの関係

続いてそれぞれの関係についてざっくりまとめます。

f:id:Engawa:20200811220532p:plain


① 認可サーバに対して「リソースへのアクセス権」を要求する
② 認可サーバーは「クライアントへのアクセス権の委譲」についてリソースオーナーに確認を行う
③ リソースオーナーはアクセス権の委譲に対して同意をする
④ 認可サーバーはアクセス権が委譲された証であるアクセストークンをクライアントに発行する
⑤ クライアントはアクセストークンをもってリソースへのアクセスを実施する

終わりに

今回はOAuthについて、学習を行った内容を簡単に書かせていただきました。
まだまだ理解できないことがたくさんあるので引き続き学習を行なっていき、OAuthに関する記事の作成を行なっていければなぁと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.