• トップ
  • ブログ一覧
  • OAuthとは?なぜ必要?
  • OAuthとは?なぜ必要?

    たかやん(エンジニア)たかやん(エンジニア)
    2021.12.14

    IT技術

    OAuth2.0とは?

    OAuth2.0とはなんのことなのでしょうか?

    OAuth2.0とはの標準仕様であるRFC6749のアプリクライアントにOAuth2.0について書いてあります。

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

    この4つの言葉の意味を理解するのがOAuth2.0の理解するのが大切。

    1. サードパーティアプリケーション
    2. HTTPサービス
    3. 限定的なアクセス
    4. 認可フレームワーク

    上の4つについて解説します。

    サードパーティアプリケーション

    サードパーティーアプリケーションとは、HTTPサービスの提供者以外が作成したアプリケーションのこと。
    ニコニコ動画にFacebookアカウントでログインなどをする場合は、ニコニコ動画がサードパーティーアプリケーションに当たります。

     HTTPサービス

    この場合、Facebookの提供しているAPIが「HTTPサービス」に該当します。

    限定的なアクセス

    ニコニコ動画が勝手にFacebookで写真を投稿したりすることはないと思います。

    それは、ログインする際にアイコン、ユーザー名、メールアドレスの取得しか許可していないからであり、投稿やフォローと行ったアクセスは許可していないためです。

    認可フレームワーク

    APIはインターネットに公開されるもののため、不正なアクセスを前提としなければなりません。

    Facebookはすべてのアクセスに対して、許可してよいかの判断をする必要があり、この判断をするのに必要なのがアクセストークンです。

    そしてアクセストークンの発行ルールを「認可フレームワーク」といえます。

    それぞれの説明で理解できたと思いますので、OAuth2.0について改めて整理したいと思います。

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

    から

    OAuth2.0は、タイムラインアプリ(サードパーティーアプリケション)によるFacbook(HTTPサービス)へのアイコン、ユーザー名、メールアドレスの取得(限定的なアクセス)を可能にするためのアクセストークン発行ルール(認可フレームワーク)

    になります。

     OAuth2.0はなぜ必要なのか

    上ではOAuth2.0とはなにかについて触れました。

    次にOAuth2.0を利用するポイントについてです。

    OAuth2.0を利用するとサードパーティーアプリケーションにユーザーIDパスワードを教える必要がありません。

    サードパーティアプリケーションはユーザーのHTTPサービス上のユーザーID、パスワードを知らないにもかかわらず、限定的とはいえHTTPサービスへのアクセスが可能です。

    OAuth2.0を利用しない場合サードパーティのアプリにユーザー名とパスワードを教えるしかありません。

    サードパーティからHTTPサービスへのアクセスは断続的にアクセスされることが必要とされ、利用者に何度もユーザーID、パスワードの入力を求める分けにいかず、アプリ内に保持することでしょう。

    それにより何が起こってOAuth2.0でどのように解決できるのかを理解することでOAuth2.0が必要になるかがわかると思います。

    OAuth2.0を利用しないと起きること

    OAuth2.0を利用せずFacebookのサービスを利用できるサードパーティのアプリがあるとします。

    そしてこのアプリは悪意のある開発者によって作成されたこととします。

    このサードパーティのアプリはOAuth2.0を利用していないためユーザIDパスワードを知っています。

    そのためすべての権限を有しており、ユーザーが意図しない投稿やコメント、フォローをすることができてしまいます。

    また、ユーザーIDとパスワードを保持しているため、漏洩にも繋がります。

    OAuth2.0を利用していた場合

    ユーザーが委譲した権限のみを有するため、仮に悪意のあるアプリケーションだったとしても被害を最小限に抑えることができます。

    Facebookの管理画面からサードパーティのアプリのアクセスを拒否すること遮断できます。

    パスワードを必要としないため漏洩にはつながらないうえ、アクセストークンが漏洩したとして有効期限があり、限定的なアクセスにより影響は限定的です。

    さいごに

    今回はざっくりですが、「OAuth2.0とはなにか」「OAuth2.0はなぜ必要なのか」を解説しました。

    ロールやトークンについては解説していません。

    OAuth2.0の勉強をはじめるにあたって最初の一歩として見ていただければ幸いです。

    SNSでOAuth認証を受ける際は、むやみやたらに許可してはいけません。

    どのようなアクセスをするのか確認してください。

    便利な仕組みではありますが、慎重に利用してください。

    たかやん(エンジニア)

    たかやん(エンジニア)

    おすすめ記事