*

非技術者のためのOAuth認証(?)とOpenIDの違い入門

公開日: : identity, OpenID , , ,

昔から、「OpenIDは認証でOAuthは認可だ」などということが言われます。しかし、その言語の意味を取り違えている方が結構多い気がしています。「もうOpenIDなんていらね。OAuthだけでいいじゃん」というような言説がよく流れてくるのがその証拠だと思います。

そこで、今日はOAuthとOpenIDの違いを考えてみたいと思います。

OpenIDは紹介状、OAuthは合鍵

まずはOpenIDの復習です。「OpenIDは認証」という言葉の内容をまずは復習してみましょう。
「認証」とは大変広い言葉でいろいろな場面で使われますが、「OpenIDは認証」という使い方の時は、「OpenIDは、いま来ている人の身元を認証」という意味です。図にすると次のような流れになります。

図 1  OpenID認証(身元確認)の場合

この図では、伊部さん(サイト)に対して有栖さんは自分が有栖であることを証明するために、公証人(Identity Provider)グーグルに紹介状を書いてもらっています。伊部さんは有栖さんのメールアドレスも必要なので、紹介状にはそれも書いてあります。これを有栖さんは伊部さんに渡しています。伊部さんは、「グーグルさんの紹介なら信用できるだろう」と考えて、有栖さんが本当に有栖和歌子さんだと認めてあげ、様々なサービスを提供します。

次にOAuthで認証をしていると呼ばれているような場合についてみてみましょう。

図 2 OAuthで身元確認もどきをする場合

図2で「認証もどき」としたのは、本来認証ではない行為を認証の代わりに使っているからです。ここでは伊部さんに対して、自分が有栖だということを証明するために、自分の表札がかかったマンションの部屋の合鍵を管理人(OAuth Server)ツイッターさんに作ってもらって、それを伊部さんに渡しています。伊部さんはこの合鍵で有栖さんの部屋に入って、「ほほう、たしかに有栖さんの部屋に入れた。ということは、あなたは有栖さんだと認めてあげましょう。」となって、有栖さんに様々なサービスを提供します。

OpenIDの時との大きな違いは、OpenIDの場合は単なる紹介状なので、伊部さんは悪さをしようと思っても、せいぜい有栖さんのメールアドレスを名簿屋さんに売るくらいしかできないのに対して、OAuthの場合は、伊部さんは有栖さんの家の中に入っていって、恋人とのラブレターのやり取りを読んだり、モノを壊したり、有栖さんの友達に迷惑メールを撒き散らしたりやりたい放題にできるということです。有栖さんが伊部さんの事をよく知っていて、本当に信頼できるなら、それでも構いません。例えば、わたしの家では、家の掃除をしてくれる方に合鍵を渡しています。これは、非常に便利なことですしまっとうなことです。しかし、よく知りもしないウェブサイトにOAuthで認証もどきをしてログインして回るというのは、そこら中に合鍵をばらまいて歩いていることになり、大変危険です。最近はOpenIDよりもOAuth認証をしたいというサイトが増えてきているのもなぜだかわかりますよね。合鍵をもらったほうがいろいろとサービス提供したり悪さをしたりするのに便利だからです。

OAuthで正しく認証するには~OpenID Connect

さて、例えば twitter の OAuth で「認証もどき」をするのは大変危険だということはおわかりいただけたと思います。では、OAuthで正しく認証だけをするにはどうしたら良いのでしょうか?例えば、部屋の鍵の代わりに、紹介状のコピーだけが入っているロッカーの鍵を渡すことにしてはどうでしょうか?

これならば、取られていってもせいぜい紹介状だけです。被害はOpenIDの時と大差ありません。

実は、これが次世代OpenIDである「OpenID Connect」 (ABワーキンググループで作られていたものに、Connectという名前をつけることにしました)の基本にあるアイディアです。このロッカーのことを、「UserInfo (ユーザ情報)Endpoint」といいます。つまり、OAuthを使いながら、安全に身元確認をできるようにしているのです。OpenID Connectは、OAuthの上のアイデンティティ層であると呼ばれるのはそういう理由からです。

もっとも、これだけだとそのユーザについての情報がわかるだけで、このユーザが実際にいつどのような認証(ワンタイムパスワード、電子証明書、など)をしたのかがわかりません。こうした「どういう認証(身元確認)をしたのか」というのは、本人についての情報というより、本人の身元確認についての情報(メタデータ)です。これらがわからないと、その認証の安全度が実はわかりません。そこで、OpenID Connect では、UserInfoロッカーの鍵と一緒に、何時どういう認証をしたのかということも合わせて紹介状にして送ります。この紹介状のことを、OpenIDトークンといいます。

図 3 OpenID Connectの場合

ここで渡される鍵は、伊部さん専用のロッカーの鍵です。その伊部さん専用のロッカーには、有栖さんの基本情報が書いてある紙が入っています。また、そこには伊部さんにわたしたい他のものも入れておくことができます。例えば、第三者からもらった資格証明書だとか、他のロッカーの鍵などです。伊部さんはそうやって取り出した鍵を使って、他のロッカーに行って、そこに入れてある情報を取り出したりもできます。

図 4  OpenID Connectのクレーム集約、分散クレーム

サイトX, Y, Z にアクセスする方法はOAuthのResource Access と呼ばれるものと同じものです。しかし、普通のOAuthと大きな違いがあります。それは、鍵の発行の仕方です。OAuthでは、それぞれのサイトの鍵を発行するのはそれぞれのサイトです。しかし、OpenID Connectでは、それぞれのサイトの鍵もUserInfo Endpoint が発行しています。逆に言えば、サイトX,Y,Zは、UserInfo Endpointの発行した鍵を受け入れられるようになっています。そのためには、それぞれのサイトは(1) この鍵の発行者を信頼(トラスト)し、(2)この鍵の正統性を確かめられるようになっていなければなりません。これを実現するために、OpenID Connectでは、JSON Web Token という鍵(Access Token)の形式を利用しています。暗号を使って(1)(2)を実現しているのですが、これはまた別の機会に譲りたいと思います。

というわけで、まとめです。

OpenID Connectは、OAuthを使って安全に認証を行うだけでなく、インターネット上に散在する様々な情報をやりとりしたり、サービス提供を可能にする分散アイデンティティアーキテクチャなのです。

(ベルリンにて)

Ads by Google

関連記事

吉川祥子健康保険証

本人確認と保険証~元オウム信者・斎藤容疑者の偽名保険証取得を考える

元オウムの平田容疑者を匿っていた斎藤明美容疑者(49)が、偽名で保険証を取得し、さらにそれを身分証明

記事を読む

no image

OpenIDは何を提供してくれるのか?

さて、近いうちにXoopsにOpenIDを組み込むとして、では OpenIDは何を「Relying

記事を読む

Twitter   jirok  縦割りスパゲッティの情報基盤整理しようとしてるのですが、「  ...

縦割りスパゲッティの情報基盤整理しようとしているが…

尊敬する國領先生にお題を頂いたので、ちょっと時間がかかりましたが、ブログにまとめてみました。

記事を読む

no image

「番号」の民間活用のためには

「番号」/マイナンバー制度(相変わらず「共通番号」としているメディアが多いのは嘆かわしいことです)に

記事を読む

no image

OAuth Wrap Web App Profile まとめ

ちょっくら、OAuth Wrap Web App Profile をシーケンス図にまとめてみた。

記事を読む

no image

OpenID Foundation の理事に無事当選いたしました

皆様のご支援のおかげを持ちまして、OpenID Foundation の理事に再選いたしました。この

記事を読む

no image

Yahoo! Japan も OpenID提供開始

なので、ちょっとやってみました。日本語になっているだけで、U.S.と同じですね、画面まで。したがって

記事を読む

no image

Facebook の「いいね」ボタンがあるサイトに行くと、トラッキングされているかに見える件

このブログにも設置しているので大声では言えませんが、実は Facebook の「いいね」ボタンは気持

記事を読む

no image

Amazonが内部的にOpenIDを利用?!

どうやら、Amazon が内部的にOpenIDを利用している模様。http://bit.ly/6NE

記事を読む

うさぎ

政府、マイナンバー制度に関わる本人確認の措置についての資料を公表

政府は12日、マイナンバー制度に関わる本人確認の処置についての資料を公表しました。 これは

記事を読む

Ads by Google

Ads by Google

National Coordinator for Health Information Technology
米国保健福祉省国家医療IT調整室(ONC)がOpenID Foundationに理事として加盟

米国保健福祉省(HHS)国家医療IT調整室(ONC)が、現地時間8月2

図1 安心マーク
JIPDEC、ヤフー他6社と組んで、なりすましメール防止ソリューションを銀行へ提供開始

日本情報経済社会推進協会(JIPDEC)のプレスリリースによると、ヤフ

うさぎ
政府、マイナンバー用コールセンター10月を目処に設置へ

政府は10月をメドに、内閣府に社会保障給付と納税を1つの個人番号で管理

うさぎ
政府、マイナンバー制度に関わる本人確認の措置についての資料を公表

政府は12日、マイナンバー制度に関わる本人確認の処置についての資料

Twitter   jirok  縦割りスパゲッティの情報基盤整理しようとしてるのですが、「  ...
縦割りスパゲッティの情報基盤整理しようとしているが…

尊敬する國領先生にお題を頂いたので、ちょっと時間がかかりました

→もっと見る

PAGE TOP ↑