ラベル 用語 の投稿を表示しています。 すべての投稿を表示
ラベル 用語 の投稿を表示しています。 すべての投稿を表示

2014年4月14日月曜日

[雑談]認証連携、ID連携そしてOAuth認証

アイデンティティ界隈って馴染みのない用語ばっかりが飛び交っている、というのもこの世界への参入障壁を高めている要因になっているんじゃないかな、と思っている今日この頃です。

と、言うことで崎村さんの「非技術者のためのOAuth認証(?)とOpenIDの違い入門」に絡めて考えてみました。
 参考:http://www.sakimura.org/2011/05/1087/


認証連携とかID連携っていうのは元々、Identity Federationの日本語訳だと思うのですが、まずはIdentityという用語を「認証」と訳してしまっている段階でアレな訳です。しかしかと言って明快に「これだ!」という和訳がないので仕方なく「ID連携」としてしまっているのが現状ですね。

実際の仕組みの意味的にいうと、RP(Relying Party)側の持っているアイデンティティ情報とIdP(Identity Provider)側の持っているアイデンティティ情報を「紐づける」というのがFederationの元々の意味合いなんですが、ここで混同されるのがSAMLで言えばいわゆるSAMLログオン(SAMLトークンを持っていることで認証する)という話や最近の類似した事例で言えばJWT(JSON Web Token)を使った簡易SSOっていうのがあったりして、ややこしくなるわけです。

そして、ここから拡大解釈されたのがOAuth認証(Access Tokenを持っていることで認証する)。。何だろうなぁ、、思っています

まとめるとこんな感じ。


ID連携簡易SSOえ?
SAML、OpenID Connectを使ったアイデンティティ情報(認証状態を含む)の紐づけSAML認証、JWTを使った簡易SSOOAuth認証
何をもって認証するかそもそも認証にクローズした話じゃないデジタル署名などで検証可能なトークン(SAMLトークンやJWT)を持っている(確かに持ち主に発行されたことを検証できない)トークンを持っている
用途RPとIdPのアイデンティティ情報の紐づけシングルサインオンシングルサインオン



この表を見ると簡易SSOって何よ?という話になると思いますが、シングルサインオンに求められる要件を考えると一目瞭然な訳ですが、代表的な例で言えばSLO(シングルログアウト)やセッション管理が出来ない、というところになると思います。
例えば、ちゃんとしたWAM(Web Access Management)ソリューションだとサーバ側でのセッションの強制終了や一つのサイト(RP)からログアウトすれば、すべての関連するRPからログアウトされるシングルログアウト何かが必須要件になると思いますが、SAML認証やJWTを使った簡易SSOでは単純にトークンを持っていること(もちろんトークンの発行先の検証や有効期限の検証はRP側でする前提)はあるものの、都度IdP側に該当トークンの有効性の確認までしない、というあたりがいわゆるシングルサインオンとの違いになってきます。

OAuth認証に至っては誰に発行したものなのか、についての検証すらしない(できない)というあたりが認証としての要件を満たしていないわけです。

現実世界のメタファに当てはめると、以下のような話になると思います。
・SAML認証、JWTでの簡易SSO:免許証など写真付き身分証明書を持ってきた
 ⇒RP側(アプリ側)で持ってきた人の顔と証明書の顔写真が一致しているか検証可能
・OAuth認証:保険証を持ってきた
 ⇒RP側では持ってきた人が主張すれば信じるしかない?


認証の話ばかりしましたが、連携の話をすると、RP側で持っているもしくは他のIdPから取得したアイデンティティ情報とFederation(連携:紐づけ)をして一つのアイデンティティとして認識をする、というのが本来のアイデンティティ連携です。この紐づけをする対象の属性の一つとして一番わかりやすいユースケースとして認証状態(どこで、いつ、どうやって認証された、という情報)があるのでFederationがシングルサインオンに使えるため、Federation=シングルサインオンみたいな話になっているわけです。

そんなこんなで、良くこの界隈では話がされる内容ですが、
・ID=Identityであって本質的には認証とは関係ない
・Federationも本質的には認証のための仕組みではない
・OAuthは認証には使っちゃダメ
ということです。

<酔っぱらい@新幹線にて>

2013年9月7日土曜日

Bearer Token とは?

先日の OpenID Technight の後の懇親会で OpenID Foundation 理事長の崎村さんと飲みながら話をしていて、「言われてみれば・・・」と思ったのが、「OAuth などの Bearer Token の Bearer ってなんのことだと思う?」という話題でした。

OAuth 2.0 では通常 Bearer もしくは MAC というタイプのトークンが使われ、単純に違いは Secret や署名の要否という理解だったので、Bearer が何を意味するのか?を考えたことはなかったんですが、言われてみると気になります。

辞書を引くと
・運ぶ人[もの],運搬人
・持参人
などという意味があるようです。
weblio より

相変わらずこの手の用語は直訳しても良くわからないです。。。

ということで、崎村さんによる解説です。

・Bearer は「持参人払い」から来ている
 ※大辞林によると「持参人払い=小切手などの証書で,特定の者を権利者として指定せず,それを持参した人に支払うこと」
・つまり、トークンを持ってきた人に対して支払う(API 利用を許可する)、という意味である
・例えば、飛行機のチケットは持ってきた人が権利者かどうかの確認を行うが、演劇のチケットは持ってきた人が観劇できる。この演劇のチケットが Bearer である

なるほど。わかりやすい。

OAuth などのトークンに置き換えると、Bearer トークンを使う場合、使用されるトークンが誰に対して発行されたのかを確認せずに、「トークンを持っていること」をベースに API 利用を許可する、ということですね。


RFC などの仕様や実装における用法を勉強するのはもちろん大事ですが、使われる用語の意味にはちゃんと設計思想が反映されているので、ちゃんと理解しておきたいところです。

2013年3月9日土曜日

[IdM用語]NASCAR問題


アイデンティティ界隈では普通に使われている言葉なのに Google 先生に聞いてみても答えが出てこない言葉って結構あったりします。
その一つが、「NASCAR 問題」です。

日本語でそのまま検索すると Wikipedia の OpenID のページに以下のように記述があります。

Account ChooserOpenID Authentication 2.0, OpenID Connect のみではなく、SAMLなどでも問題になる ユーザーインターフェースの問題 (NASCAR問題、WAIF問題)を解決すべく検討されている 仕様。

どうやらユーザーインターフェースの問題らしい、というところまではわかりますが、具体的にどういう問題なのか、NASCARって何なのか、についてはよくわからないままです。



というわけで簡単に解説です。(もっとうまく解説できる、もしくは違うよ、という方はご連絡・ツッコミください!)

簡単に言ってしまうと、
OpenID や SAML などで外部 IdP を使ってサービスへログオンするとき、IdP が増えてくるとユーザが自分がログオンに使う IdP を探し出すのが難しくなって利便性が下がってしまう
という問題です。
ログオンメニューに Facebook のアイコンや Twitter のアイコン、Yahoo! や Mixi や、、、という様にずらりと並んでいるのを見たことはないでしょうか?

例えば OpenID Foundation のページへログオンするときは以下の様に自分が使う OP(OpenID Provider)を選択することになります。



で、Account Chooser を使うと一回ログオンした IdP の情報を覚えておいてくれるので、毎回使ってもいない IdP が沢山並んでいる中から自分が使う IdP を選んでログオン、という手間が省けますよ、という流れです。
ちなみに Account Chooser 自体に関する情報は OpenID Foundation Japan の Evangelist である @nov 氏、 @ritou 氏が解説しているので、ここを参照してください。

- @IT の記事 by @nov 氏
 セキュアで使いやすい認証UX標準化を目指すAccount Chooserプロジェクト
 http://www.atmarkit.co.jp/ait/articles/1301/28/news010.html

- r-weblife by @ritou 氏
 GoogleでわかるAccount Chooser
 http://d.hatena.ne.jp/ritou/20111119/1321688092


で、NASCARって何なのか?だけが残ってしまいました。
NASCAR(ナスカー)とは National Association for Stock Car Auto Racing / 全米自動車競争協会のことです。

こんな車が走ってるレースです。


これとアイデンティティとの関係ですが、車を良く見ると各スポンサーのロゴステッカーが所狭しと並んでいるのが見えると思います。これって先ほどの IdP のロゴが並んでいるのと似てますよね?ということで、NASCAR みたいだから NASCAR 問題ということです。

他にも色々とマニアック用語がありそうなので、時々解説していこうと思います。