実は身近な存在?OAuthとは何かを探る

schedule 2018/05/02  refresh 2023/11/08

 

 

なくてはならない「OAuth」

OAuth(オー オース)という言葉は、耳慣れないという方も多いかも知れません。Authという単語が含まれているので、ユーザー認証にかかわる何かかな?と想像はできそうですが、それでは、Oとはいったい何なのか?正式な名前が略語に由来する場合、語源がイメージがしにくいのは、やむを得ないところではあります。

 

単語の意味については、ひとまずおいておきます。この技術は、どのような場所で使われているのでしょうか。その答えのうち、古くから広く使われているものについては、ある意味意外に思われるかも知れません。それは「SNS間での連携」です。

 

ひとつの例として、Instagramに投稿した写真を、Facebookでも同時に投稿したい場合を考えてみましょう。この場合、Instagramの設定画面で、Facebookの「リンク済み」アカウントを登録するという操作を行います。

 

これが完了すると、Instagramに投稿した写真が、Facebookにも同時に投稿されることになります。Instagramの場合、連携できるSNSはFacebookだけではありません。TwitterやTumblr、新浪微博など、多数のSNSが連携できます。連携の根幹を担っているのが、OAuthなのです。

 

 

Authは「認証」ではない

さて、この場合Instagramへはユーザー認証が必要となるのは、いうまでもないでしょう。しかし、その先のFacebookやTwitterといったSNSへの「認証」は、どうするのでしょうか。当然ながら、Instagram側では、FacebookのユーザーIDやパスワードといった、認証情報を保有しているわけではありません。

 

 

ここで、「Auth」という単語が何の略なのかということを確認しましょう。実は、認証を意味する「Authentification」ではなく、認可を意味する「Authorization」を短縮したものなのです。認証と認可、この2つ、言葉は似ていますが、異なるものです。

 

「認証」とは、「誰か」を確認するものです。もう少し掘り下げますと、これから操作をしようとしている「誰か」が間違いなく「本人」であることを確認することを意味します。

古くからある、キャッシュカードなどのPINコード、いわゆる暗証番号が代表的なものです。ユーザーIDとパスワードによる認証も、実績を積み重ねています。最近では生体認証という、より強固な認証手法も実用化されています。

 

「認可」とは

いっぽうで、「認可」とは、何かをするための「許可」を与えるものです。具体的に「何ができるのか」を指定します。

 

上の例では、あるInstagramのユーザーが、一定の手続きを行うことで、Facebook上のあるユーザーとして、自動的に投稿することが可能になります。ここで、Facebook側では「誰か」を確認するわけではなく、操作を「許して」いることに留意してください。

 

結果として、ログインをしていないFacebook側に、Instagram経由で投稿が可能になるのです。ここではSNS連携を例に示しましたが、現在ではWebアプリケーションなどで、OAuthの仕組みを用いたユーザーの認可を実装するケースも増えています。

 

なお、OAuthのOについては、公式サイトにも正式な説明はありません。ただし、OAuthはオープンスタンダードですので、Openに由来するものと考えても問題はないでしょう。

 

 

認可に使う「トークン」

さて、ここに至るまでには、一定のルールがあります。ルールがない場合、アプリケーションが悪意のユーザーから攻撃を受け、想定しなかった事態を引き起こす可能性があるからです。

 

 

具体的には、事前にアクセストークンを渡しておく方法です。アクセストークンとは、認可されたリクエストであることを示すトークンで、鍵のような役割を果たします。このアクセストークンは、クライアントアプリケーションからの要求に従い、認可サーバーが発行するものです。

 

実は、RFC6749に規定されている「OAuth 2.0」とは、アクセストークンの要求と、応答についての手順を標準化し、示したものをいいます。OAuthがSNS連携などで使われるというのは、他のアプリケーションを利用するために必要な認可情報を取得するための手続きなのです。

 

アプリケーションがあるサーバーでは、このアクセストークンをAPI経由で受け取ります。アプリケーションはトークンを解析します。結果、認可されたリクエストであった場合に、処理を行うという流れになります。

 

 

OpenIDとの関係は?

OAuthを用いた認可は、便利ではありますが、万能ではありません。認証機能がないことが、その一端を示しています。このことから、OAuth 2.0を拡張し、認証機能や属性取得機能を追加した「OpenID Connect」というID連携手法も登場しています。

 

 

ところで、OpenID ConnectとOpenID 2.0は、名前が重なっていますが、別のものであることに注意してください。OpenIDは、正式にはOpenID Authenticationといい、あくまでインターネット上での認証を共通化するものです。

 

さまざまなサイトやアプリケーションを利用する場合に。ユーザーIDとパスワードという情報を複数組管理するのは、非常に手間がかかるものです。それを解決する代表的な手法が、シングルサインオンとなるのは言葉にするまでもありません。OAuthやOpenIDといった技術も、アプローチする目的地は同じになります。

なお、シングルサインオンのサービスには、OAuthやOpenIDも同時に、シームレスに扱えるものがあります。有効に活用したいものです。

 

(画像は「Pixabay」より)

 

▼外部リンク

OAuth2.0 公式サイト
https://oauth.net/2/

RFC6749 The OAuth 2.0 Authorization Framework
https://tools.ietf.org/html/rfc6749