*

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

公開日: : 最終更新日:2012/01/15 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

関連記事

no image

twitter連歌

GLOCOM勉強会の後の打ち上げで、twitter連歌など。 もと tweet へのリンクなどは、

記事を読む

no image

はてながOpenIDに対応

http://www.hatena.ne.jp/info/openid 参照

記事を読む

no image

Ping Identity、SAML 2.0サーバのベータ版を公開

Ping Identityは、3月に標準として策定されたSAML 2.0に対応した初めての製品をリリ

記事を読む

符号変換を利用して、異なる「番号」を必要に応じて紐付けする

共通番号/マイナンバーの保管と紐付け作業について

まずは、マイナンバーに関する以下の内閣官房の絵を見ていただきましょう。「番号」となっているのがマイナ

記事を読む

BEeGVN4CYAA8lB4.jpg-large

JICS2013 第1日目まとめ

Japan Identity and Cloud Summit 2013 の togetter まと

記事を読む

no image

Internet Identity Workshop (IIW) 2007

Internet Identity Workshop (IIW) 2007 May 14-16

記事を読む

no image

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

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

記事を読む

no image

Yahoo! Japan も OpenID提供開始

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

記事を読む

no image

「番号」制度の情報連携基盤は複雑か?

国民ID制度、「番号」制度(あやまって、共通番号制度とも呼ばれることがあるが)のコンテキストで語られ

記事を読む

オオカミがきた

オオカミが来た:人気のオープンソースセキュリティソフトウェアでまた1つ大きな脆弱性が見つかった?!ーCNETがダメダメな件

「OpenSSLの脆弱性「Heartbleed」に続き、人気のオープンソースセキュリティソフトウェア

記事を読む

Ads by Google

Ads by Google

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

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

本人確認書類
ベネッセ個人情報漏洩事件所感

ベネッセから、子供等の個人情報が最大2070万件漏洩したらしい。

X.pose 3D printed dress exposes your body as you reveal data   CNET
x.pose: スマホを使うことで裸になっていく自分を可視化したドレス

スマホが生成していくデータがどのように自分を裸にしていくかを可視化

Privacy for Sale
パーソナルデータ検討会第11回会合まとめ

パーソナルデータ検討会第11回会合が行われました。 今回は大綱案が発

マイナンバーうさぎ。名前はまだない。
吾輩は兎である。名前はまだ無い。【マイナンバー】

あ、いや、ふと書いてみたかっただけなんですが…。 社会保障と税の

→もっと見る

PAGE TOP ↑