OAuthとは?概要からメリット・デメリット、具体的な仕組みやOpenIDとの違いまで徹底解説

2023/12/11

main.jpg近年、さまざまなWebサービスが発達し、私的な利用だけでなく業務でも多くのサービスを利用するようになっています。そんな多くのWebサービスを連携し、利用しやすくするための仕組みの一つがOAuthです。
しかし、OAuthの名前は聞いたことがあっても、その内容や具体的な仕組みはよくわからないという方も多いのではないでしょうか。
この記事では、OAuthの概要、必要とされる理由や仕組み、OAuth認可の流れのほか、利用する際のメリット・デメリットや、OpenIDとの違いについて解説します。
 

■OAuthとは? 

はじめに、OAuthの概要や混合されやすいOpenIDとの違いについて見ていきましょう
 

◇OAuthについて

OAuth(オーオース)はアクセス権限の認可を行なうためのプロトコルです。現在では2012年に発行されたOAuth2.0が標準化されています。
OAuthは複数のSNSやWebサービスを連携して動作させるための仕組みです。例えば、TwitterとFacebookを連携し、Twitterでつぶやいた内容をFacebookで自動的に投稿する、といったことを実現できます。
このような動作は、本来であればそれぞれのサービスにログインし、個々に対応しなければなりませんが、OAuthを使うことで一度のログインで可能になります。
なお、OAuthは“認可”を行なう必要がありますが、“認証”ではないため注意が必要です。

・認可(Authorization):権限や許可を与えること
・認証(Authentication):相手の身元を確認すること

つまり、OAuthはWebサービスなどを連携して“権限や許可を与える”ためのプロトコル・仕組みということです。
 

◇OpenIDとの違い

OAuthと似たような仕組みとしてOpenIDが存在します。OpenIDはあるサービスで使っている認証用のユーザーIDとパスワードを他のWebサービスでも利用するための仕組みです。
OAuthとOpenIDの違いとしては、OAuthが認可のプロトコルであるのに対して、OpenIDは認証のプロトコルであることです。また、OAuthはWebサービス間の機能を連携させるためのものであり、OpenIDはシングルサインオンを実現するためのもの、という違いがあります。
シングルサインオンは、一度のログインで複数のサービス・システムにログインするための仕組みで、ログインするユーザーの身元を確認するため、認証に該当します。

なお、今回のOpenIDについての解説は“OpenID Authentication”についてのものです。OpenID AuthenticationはOAuthより早い段階で登場し、2006年に標準化されています。その後、OAuthを利用する機能拡張が行なわれた“OpenID Connect”が登場しました。
OpenID ConnectはOAuthとOpenID Authenticationでそれぞれ認可と認証を行なっていたものを統合したものです。OpenIDにも2種類存在していることは、OAuthとOpenIDが混同されやすい要因の一つとなっているため覚えておきましょう。

■OAuthはなぜ必要なのか?

sub1.jpgOpenIDが標準化された2006年から多くのWebサービスが登場し、個々にユーザーIDとパスワードを管理することの煩雑さが課題となっていました。
その課題を解決するためにシングルサインオンを実現できるOpenIDが登場しましたが、OpenIDではWebサービス間の機能連携までは実現できません。
そこで、ユーザーの認証だけでなく機能の連携(認可)ができるように開発されたものが2007年に登場したOAuthです。2012年にはOAuth2.0に改定され、脆弱性について対策が行なわれました。

近年のWebサービスの多くにはAPI(Application Programming Interface)が用意されており、OAuthはAPIを使って機能の連携を行なっています。APIはサービスやアプリが他のサービス・アプリと連携するための窓口であり、サービス間の連携において頻繁に利用されるものです。
OAuthが必要とされる背景には、Web連携を行なうサービスが増加したことが挙げられます。サービスの増加によって、各サービスが公開するAPIへの認可を行なう手段を必要とする機会が増えたのです。
 

■OAuthの便利な仕組み

OAuthの便利な仕組みは、次のような要素や人によって成り立っています。

・リソースサーバー:保護されたリソースを持つサーバー
・リソースオーナー:リソースの持ち主
・認可サーバー:リソースオーナーを認証し、アクセストークンを発行するサーバー
・クライアント:リソースサーバーにアクセスし、アクセストークンを取得する者

OAuthはアクセスを許可する認可情報(アクセストークン)を使ってWebサーバー間の機能連携を実現しています。例えば、Twitterに投稿した内容をFacebookにも自動的に投稿する場合に当てはめると、次のような関係になります。

・リソースサーバー&認可サーバー:Facebook
・リソースオーナー:ユーザー
・クライアント:Twitter

リソースオーナーであるユーザーを介して、TwitterとFacebookの間で認可のためのコード(認可コード)とアクセストークンを取得したり、やり取りしたりする仕組みです。
 

■OAuth認可までの流れ

OAuthのフローにはいくつか種類がありますが、そのなかでも代表的な認可コードフローをもとに認可までの流れを解説します。先ほど例に挙げたTwitterに投稿した内容をFacebookにも自動的に投稿する場合の流れで見ていきましょう。

1.リソースオーナー(ユーザー)がTwitterにFacebookとの連携を要求
2.Facebookにリダイレクトされて認証を実施
3.認可画面が表示され、リソースオーナーが許可する
4.Twitterにリダイレクトされ、FacebookからTwitterに認可コードが送信される
5.TwitterからFacebookに対して認可コードを使ってアクセストークンの取得を試みる
6.Facebookは送信された認可コードを確認し、問題がなければアクセストークンを発行
7.リソースオーナーがTwitterでつぶやくと、アクセストークンを使ってFacebookにも投稿

■OAuthを利用するメリット・デメリット

sub2.jpgOAuthの利用は多くのメリットをもたらしますが、利用する上では忘れてはならない注意点(デメリット)もあります。一つずつ見ていきましょう。
 

◇メリット

OAuthを利用するメリットとしては、おもに次の4点が挙げられます。

・他サービスとの連携が容易になる
OAuthは認可のための仕組みであるため、ユーザーはIDとパスワードを連携先のサービスに渡す必要がありません。ユーザー側で認可情報を簡単に移譲できることから、他のサービスとの連携が容易になるメリットがあります。
先の例にも挙げたとおり、TwitterとFacebookを連携することで、両方にログインせずとも投稿できるよう機能を連携することが可能です。

・利便性の向上
OAuthはOpenID Connectとあわせてソーシャルログインに利用されています。ソーシャルログインはSNSのアカウントを使ってWebサービスにログインする仕組みです。
例えば、TwitterやLINEのアカウントを使ってECサイトやクラウドサービスにログインできるようになります。
多くの人が利用しているSNSアカウントと連携することで、ユーザーはサービスごとにID管理を行なう必要性がなくなります。ユーザーの利便性が向上するため、ソーシャルログインを実装したサービス提供者側は、リピート率が向上するといったメリットを得られるのです。

・柔軟なサービス運営の実現
OAuthはユーザーが利用する際、必要最低限となる権限のみを移譲できるため、柔軟なサービス運営を実現します。例えば、Googleカレンダーと連携するサービスの場合、参照だけの権限を移譲して更新は行なえないようにする、といったことが可能です。
OAuthでは認証のためのユーザーIDやパスワードを連携しないため、連携先のサービスから認証情報が漏れるリスクがありません。このことからセキュリティの面でも安心して利用でき、柔軟なサービス運営が実現できるでしょう。

・アクセストークンが悪用される危険が少ない
アクセストークンを悪意のある第三者に盗まれてしまうと、アクセストークンで認可されている操作を悪用される可能性があります。その点、OAuthは、発行されるアクセストークンに有効期限を設定できます。
有効期限を設定することでアクセストークンが盗まれたとしても、影響範囲を最小限に留められるのです。
 

◇デメリット

反対にOAuthを利用するデメリットとしては、次の2点が挙げられます。

・なりすましの被害に遭うリスク
OAuthで連携するサービスなどで悪意のあるプログラムが仕込まれている場合、なりすましの被害に遭う可能性があります。例えば、悪意のあるサービスだと気付かずにTwitterとの認可処理を実行してしまうと、アクセストークンが悪用されてTwitterと連携している他サービスでなりすましの被害に遭う可能性があります。
ただし、これはアクセストークンの書き換えができる場合です。認可コードフローやOpenID Connectを利用している場合は、書き換えができないため問題ありません。
とはいえ、このようなリスクがあることは覚えておきましょう。

・金銭的な被害に遭うリスク
OAuthの連携先のサービスにECサイトなどがある場合も注意が必要です。この場合もなりすましの被害と同様に悪意のあるサービスなどと連携することで、認証情報が盗まれる可能性があります。
ECサイトなどで認証情報が盗まれてしまうと、買い物が勝手に行なわれたり、登録しているクレジットカード番号が盗まれたりして金銭的な被害に遭う可能性があります。
 

■まとめ

OAuthは認可を行なうためのプロトコル・仕組みであり、2012年、発行されたOAuth2.0が標準化されました。近年では多くのWebサービスが登場したことでWebサービス間の機能連携が求められるようになり、APIアクセスを認可するための手段としてOAuthが必要とされています。
OAuthの仕組みは、認可サーバー・リソースサーバー・クライアント・リソースオーナーという登場人物のなかで、認可コードやアクセストークンを発行し、やり取りすることで実現しています。本記事で解説した具体的な認可までの流れを読んで、仕組みを理解する際の一助としてください。
OAuthには覚えておくべきリスク(デメリット)も存在しますが、大きなメリットを得られる非常に便利な仕組みであるため、今後も利用される機会は増えていくことでしょう。

この記事を書きました

森 智史
所属:GMOグローバルサイン トラスト・ログイン事業部
トラスト・ログイン プロダクトオーナー