OAuthとは?なぜ必要?
IT技術
OAuth2.0とは?
OAuth2.0とはなんのことなのでしょうか?
OAuth2.0とはの標準仕様であるRFC6749のアプリクライアントにOAuth2.0について書いてあります。
OAuth2.0はサードパーティアプリケーションによるHTTPサービスへの限定的なアクセスを可能にする認可フレームワーク。
この4つの言葉の意味を理解するのがOAuth2.0の理解するのが大切。
- サードパーティアプリケーション
- HTTPサービス
- 限定的なアクセス
- 認可フレームワーク
上の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認証を受ける際は、むやみやたらに許可してはいけません。
どのようなアクセスをするのか確認してください。
便利な仕組みではありますが、慎重に利用してください。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
たかやん(エンジニア)
グンマー帝国から密出国してきてるブタ。 東京人多い...
おすすめ記事
移転したライトコード大阪オフィスを調査せよ!
広告メディア事業部
2024.04.03
日常
【GCP】BIG QUERYを触り程度に理解してみる
かねまさ(エンジニア)
2024.04.02
IT技術
【Android】Github ActionsでFirebase Test Labの実行を分散する
笹川(エンジニア)
2024.04.02
IT技術
【Next.js】App Router で使用できるキャッシュまとめ
モーリー(エンジニア)
2024.03.29
IT技術
GitHubActionsのランナーに触れてみた
こやまん(エンジニア)
2024.03.28
IT技術