OAuthとOpenIDについてまとめてみた

CISSP

こんにちは、今回は、OAuthとOpenIDについて勉強していきたいと思います。この二つを組み合わせると便利なことは知っていたのですが、それぞれがどのような働きをしているのか理解できていなかったので、ざっくりまとめたいと思います。

1. OAuthとは?  

OAuthを使用することで、サードパーティに認可を委譲できます。
アクセストークンを使用して、ユーザーが許可したリソースへのアクセスを許可することができます。
つまり、アプリケーションが他のアプリケーション上のユーザーのデータ(ユーザーが許可したリソース)にアクセスできるようになります。

2. OpenIDとは?

OpenIDを使用することで、サードパーティに認証を移譲できます。
Webシングルサインオン(SSO)のためのオープンスタンダードであり、ユーザーが認証局にログインし、認証情報を取得することで、複数のWebサイトにシングルサインオンできるようにします。
一般的によく聞くのはOpenID Connectだと思いますが、OpenID Connectは、OpenIDに基づいて開発された次世代のプロトコルであり、より高度な認証機能を提供することができます。

3. OAuthとOpenIDの比較

これまでの説明だと正直OAuthとOpenIDの違いが分かるようでいまいちピンと来ませんよね…
そこで具体例を使って二つを比較したいと思います。
※実際の詳細な仕様は不明です。あくまでも理解のための具体例としてご参照ください。

OAuthの例

あるSNSのユーザーが、自分のアカウント情報やフレンドリストなどのデータを、あるアプリケーションに提供することを考えます。

この場合、OAuthにより、SNSのユーザーは、アプリケーションに対して特定のアクセス許可を与えることができます。アプリケーションは、OAuthに従って、アクセス許可を受け取り、SNSのAPIを使用して、ユーザーのデータにアクセスすることができます。

OpenIDの例

例えば、WordPress.comのWebサイトにログインする際に、GoogleアカウントのOpenIDを使用することができます(赤枠をご覧ください)。つまり、Googleアカウントを使用して、他のWebサイトにログインすることができるということです。

4. OAuthとOpenID Connectを組み合わせて使うことが多いのはなぜ?

先述のように、OAuthとOpenID Connectは役割が異なります。
OAuthは認可の移譲、OpenID Connectは認証の移譲です。それぞれを個々に利用することもできますが、組み合わせて使うことで、よりセキュアで、利便性の高い認証・認可システムを構築し、シングルサインオンを実現することができます。

まとめ

今回はOAuthとOpenIDについて勉強をしていきました。現状はかなりざっくりの理解になってしまっているので、今後より詳しく勉強し、この記事の内容拡充、もしくは改めて解説記事を公開したいと思います。
この記事が、少しでも皆様のご理解に役立てば幸いです。

ここまでお読みいただきありがとうございました!

コメント