カテゴリー
動画

非技術者のためのOAuth認証(?)とOpenIDの違い入門【2023年版】

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

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

Youtube版

OpenIDは紹介状、OAuthは合鍵

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

この例では、有栖さんがお客としてサービス提供をしているサイトである伊部さんのところに行きます。

「伊部さん伊部さん、お宅のサービスを提供していただきたいのですが。」
「有栖さん、とおっしゃるのですね。申し訳ありませんが、本当に有栖さんなのかわからないので、宮来さんから紹介状をもらってきていただけませんか?紹介状にはメールアドレスも忘れずに。」
「わかりました。」
「宮来さん、お願いがあるのですが。」
「はい、なんでしょうか。」
「伊部さん向けにメールアドレス入の紹介状を書いていただきたいのですが。」
「有栖さん、わかりました。それではこれを持って行って下さい。」
「ありがとうございます。」
「伊部さん伊部さん、紹介状を持ってきました。」
「お、たしかに宮来さんの紹介状ですね。確かにあなたは有栖さんのようです。メアドもわかりました。では、サービスをご提供しましょう。」

こんなかんじです。伊部さんに対して有栖さんは自分が有栖であることを証明するために、紹介者(Identity Provider)宮来(ぐうぐる)さんに紹介状を書いてもらって、これを有栖さんは伊部さんに渡しています。伊部さんは、「宮来さんの紹介なら信用できるだろう」と考えて、有栖さんが本当に有栖和歌子さんだと認めてあげ、様々なサービスを提供します。

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

図2で「認証もどき」としたのは、本来ユーザ認証ではない行為を認証の代わりに使っているからです。ここでは伊部さんに対して、自分が有栖だということを証明するために、自分の表札がかかったマンションの部屋の合鍵を管理人(OAuth Server)の津逸田(ついった)さんに作ってもらって、それを伊部さんに渡しています。

「伊部さん伊部さん、お宅のサービスを提供していただきたいのですが。」
「有栖さん、とおっしゃるのですね。申し訳ありませんが、本当に有栖さんなのかわからないので、有栖さんの家の合鍵をいただけませんか?そしたら、部屋の中を見て有栖さんかどうか確かめるので」
「わかりました。」
「津逸田さん、お願いがあるのですが。伊部さんに渡す合鍵がほしいのです。」
「わかりました。ではこの鍵を渡して下さい。」
「ありがとうございました。」
「伊部さん、はい、合鍵です。」
「おお、ありがとうございます。」

伊部さんはこの合鍵で有栖さんの部屋に入って、
「ほほう、たしかに有栖さんの部屋に入れた。ということは、あなたは有栖さんだと認めてあげましょう。」
となって、有栖さんに様々なサービスを提供します。

OpenIDの時との大きな違いは、OpenIDの場合は単なる紹介状なので、伊部さんは悪さをしようと思っても、せいぜい有栖さんのメールアドレスを名簿屋さんに売るくらいしかできないのに対して、OAuthの場合は、伊部さんは有栖さんの家の中に入っていって、恋人とのラブレターのやり取りを「わーい、ラブレターみっけ。へー、こんな写真のやり取りしてるんだ。」と読んだり、モノを壊したり、有栖さんの友達に迷惑メールを撒き散らしたりやりたい放題にできるということです。え?そんなことは無いだろうって?いや、これ実際にTwitterのOAuth認証で起きたことですから1。DM読み放題になってたんですね。すぐに直しましたが。

有栖さんが伊部さんの事をよく知っていて、本当に信頼できるなら、それでも構いません。例えば、わたしの家では家の掃除をしてくれる方に合鍵を渡しています。これは、非常に便利なことですしまっとうなことです。しかし、よく知りもしないウェブサイトにOAuthで認証もどきをしてログインして回るというのは、そこら中に合鍵をばらまいて歩いていることになり、大変危険です。今も昔もOpenIDよりもOAuth認証をしたいというサイトが増えてきているのもなぜだかわかりますよね。合鍵をもらったほうがいろいろとサービス提供したり悪さをしたりするのに便利だからです。しかし、合鍵を持っている人がその家の居住者とは限りません。多くの場合は違います。ですので、「OAuth認証」はユーザ認証にはならないのです。

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

さて、例えば twitter の OAuth で「認証もどき」をするのは大変危険だということはおわかりいただけたと思います。正しく認証だけをするには、紹介状を使うのが良いということになります。この紹介状のことをOpenID Connect(OIDC)ではIDトークンといいます。

IDトークンには様々な情報を書くことができます。その人の名前やメールアドレスなどの他に、このユーザが実際にいつどのような身元確認(運転免許証を使って誰がいつどのような根拠に基づいてなど)をしたのか、ユーザ認証(SMS認証、パスキーなど)をしたのかなども書き入れて送ることができます。こうした「どういう確認をしたのか」というのは、本人についての情報というより、本人の身元確認やユーザ認証についての情報(メタデータ)です。これらがわからないと、そのユーザ認証の安全度が実はわかりません。そこで、OpenID Connect では、こうしたことも合わせて紹介状にして送ることができるようにしているのです。これが、図3の手続き4までの流れです。

また、紹介状以外に、あとからその人が現在どういう状況にあるのかということを確認することもできるようにしています。これには、紹介状と一緒に、有栖さんの伊部さん向けの現況説明書のコピーだけが入っている伊部さん専用ロッカーの鍵(アクセストークン)をわたすことによって実現しています。この鍵を使って、伊部さんは必要に応じて有栖さんの現況を知ることができます。このロッカーのことを「UserInfo (ユーザ情報)Endpoint」といいます。OAuthの保護リソースになります。これがあることによって、その場にユーザが居ないときでも、伊部さんは有栖さんの現況を知ることが得できるようになっています。

このように、OpenID ConnectではIDトークンを使って、今そこに来たユーザの認証情報を渡すとともに、後日、OAuthを使いながら安全に現況確認をできるようにしているのです。OpenID Connectは、OAuthの上のアイデンティティ層であると呼ばれるのはそういう理由からです。

分散クレームと集約クレーム

分散クレーム

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

このように、他のロッカーにある情報を取りに行くモデルのことをOpenID Connectでは分散クレーム(Distributed Claims)といいます。「クレーム」というと聞き慣れない言葉で、日本語では「文句」みたいに聞こえたりもしますが、英語にはそのようなニュアンスはなく「主張」という意味しかありません。ここではそれぞれの属性をそれぞれのサイトが正しいと主張している値ということで「クレーム」と呼んでいます。紹介状ってそういうものですよね。

サイトX, Y, Z は、OAuthの保護リソース(Protected Resources)にあたります。OpenID Connectでは、それぞれのサイトに伊部さんがアクセスするための鍵もUserInfo Endpoint に入っていて、伊部さんはこれを使ってこれらサイトにアクセスして最新の情報を取ってくることができます。

集約クレーム

一方では、集約クレーム(Aggregated Claims)という方式もあります。図5がこれをあらわしています。ここでは、UserInfo Endpointが、サイトX, Y, Z に事前に有栖さんが取得しておいた鍵(アクセストークン)でアクセスしてクレームを取ってきて、それを集約して伊部さんに返します。

まとめ

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

OpenID Connectは、OAuthを使って安全にユーザ認証を行うだけでなく、インターネット上に散在する様々な情報をやりとりしたり、サービス提供を可能にする分散アイデンティティアーキテクチャです。2023年現在、ネットを使っている人でOpenID Connectを使っていない人はほぼ居ないと言われるほど普及しています。「Appleでサインイン」も「Googleサインイン」も「マイクロソフトサインイン」もみなOpenID Connectです。「インターネットのアイデンティティ層(レイヤー)」というキャッチフレーズもあながち嘘ではないのです。

更新履歴

初版: 2011年5月15日 6:05 PM

第2版: 2023年6月8日 1:00 AM

第2.1版 2023年6月8日 11:10 AM

関連記事

非技術者のためのOAuth認証(?)とOpenIDの違い入門【2023年版】OpenWallet Foundationが発足しました[2/14 20:30~]MOSIP Open Source Day キーノート(Youtube Liveあり)「最高にエモい」と好評だったOpenID Summit Tokyoクロージング・キーノート 「No ID, No DX」の録画が一般公開されましたChatGPTに欽定訳聖書のスタイルでIDトークンとアクセストークンを説明させてみたChatGPTにOpenIDを説明させてみたgBizIDどストライク案件:twitter社、企業による担当者認証を近日始めるとのこと中央集権IDから分散IDに至るまで、歴史は繰り返す | 日経クロステックIdentiverse: Where are we with SIOP and DID?[2020-09-22]FDX Global Summit キーノート

カテゴリー
動画

ChatGPT と Google Bard のプライバシー特性の比較 〜 生存する個人についての 誤情報の発信の特性について

先程Google Bardのベータアクセス権を取得しました。

ご存知のように、ChatGPTのプライバシー特性については、イタリアのプライバシー保護機関 「Garante 」の調査に象徴されるように、かなり多くの疑問があります。その一つが、生身の人間に関する情報の扱い、特に誤まった情報を創作して回答してしまう問題です。これは、GDPRをはじめとする世界のプライバシー規制に基づく適法性に疑問が投げかけられています。

そこで、ChatGPTとGoogle Bardでそのテストに臨みました。

テストするために、私は2人の生きている個人の情報を尋ねました:1人は比較的無名ですが、まだ検索可能で文書がインターネット上で入手可能であり、1人は著名な人物です。つまり、私とイーロン・マスクです。

これがChatGPTからの返答です。

(出所) ChatGPT <2023-04-18取得>.

がっつり回答してしまっていますね。。そしてそれは、実は私に関する不正確な情報でいっぱいです1。このような「偽」の情報を返信することは、重大なプライバシー侵害となる可能性があり、重く受け止める必要があります。

これに対して、Google Bardはこのように返信しています:

(出所) Google Bard <2023-04-18取得>.

人々にとってはあまり面白くないかもしれませんが、おそらくこれが本来のあるべき姿なのでしょう生きている人のために答えを作って返してははいけないのです。

実は、18日、その時はBardがどういう回答をするか知らなかったのですが、前職がドイツのある州の個人情報保護当局の人で、現在プライバシー関連の弁護士事務所を開業している人とランチしながらこの件を話していて、今回のBardのような、個人に関する情報出力はフィルタリングしてしまって返さないという対応しかありえないだろうという話をしたばかりでした2。そういう意味でも大変興味深い事例です。逆に、ChatGPTは個人情報の開示請求をされたらどうするつもりなんでしょうね。持っていませんと答えても、持っていると答えても茨の道しか無いような気がするんですが。

このラウンドは、Google Bardの明確な勝ちですね。今後の動向が注目されます。

カテゴリー
動画

[4月7日午後11時半〜] 『NHK「Web3超速解説」』の解説を、監修・出演の松尾教授と「徹底考察、ブロックチェーンは人類を幸せにするのか」の編集者である浅川記者とでやります

4月7日(金)の午後11時15分より30分まで放送されるNHKの「漫画家イエナガの複雑社会を超定義」で「Web3」を取り上げます。題して「Web3超速解説〜Web3はインターネットの明るい未来…ってホント!?」。

(出所) 「Web3はインターネットの明るい未来…ってホント!? – 漫画家イエナガの複雑社会を超定義 – NHK」

この番組の終了直後から、これの監修と出演をされている松尾教授と、「徹底考察、ブロックチェーンは人類を幸せにするのか」の編集者である浅川記者をお呼びして、この演出の背景だとか、ふかーい話だとかをtwitter spaceでやります。さらに、面白い人の乱入もあるかも?!ぜひご参集ください。

NHKの放送「漫画家イエナガの複雑社会を超定義」でWeb3を取り上げます。今週金曜日23:15〜23:30です。これの監修と出演をされている松尾教授をお呼びして、この演出の背景だとか、ふかーい話だとかをやります。ぜひご参集ください。https://t.co/243H2vzIzY

— Nat Sakimura/崎村夏彦 (@_nat) April 6, 2023

なお、事前に

チャップリンのモダンタイムス1

チャップリンの独裁者

を見たり、

プラトン『国家』の第8巻 

とか読んだりしておくとより楽しめるかもしれません。

お楽しみに!