認証APIとOpenIDの違いを説明して、OpenID導入を説得する


最近、認証APIOpenIDの違いについて説明する機会が増えてきた。


Flickrの画像を入れているのは、近年の認証APIのなかでFlickr Authentication APIがいろいろな意味でも象徴的な存在だからだ。


OpenIDが盛り上がってきていることもあり、自社のサービスへOpenIDの導入(Relying Partyとして)を考えていても、関係者へ理解してもらい導入を決めるまでの説明が難しいと感じている方々が多いのではないだろうか。


ここでは、私がよく聞く質問として一番多い、「認証APIOpenIDはどう違うのか?」という質問へのベストな回答を考えてみる。


人は何か新しいモノについて説明されてそれがよく分からないとき、それとよく似たしくみを例にあげてそれと比較した説明を求めることが多い。すでに理解しているものから、その差分だけで考えた方が手っ取り早いからだ。


それはそれですごく正しいことなので、認証APIをある程度理解している人に対してはそれをきっかけに差分の説明すれば、うまく効率的に理解してもらえるのではないだろうか。


認証APIOpenIDをひとことで言えば


それぞれの概要をごく簡単に言うなら、

"認証API"とは、あるひとつのサービスプロバイダが外部の多数のアプリケーションに対して、自社のアカウントと認証のしくみを提供するためのAPI。サービスプロバイダの持つ、認証が必要な他のWebAPIへのアクセス制御も同時に行う場合が多い。

"OpenID"とは、複数のOpenID Providerの提供するOpenIDで、すべてのOpenID対応サイト(Relying Party)へログインできるようにする、オープンな認証のしくみ。"認証"の部分に特化しており、リソースへのアクセス制御など"認可"の部分は行わない。


という説明になる。(ひとことにおさまってないか)



この説明で正しいと思うのだが、こう話しただけではスッキリ理解とまではまず行かないだろう。もう少し理解を進めてもらうようにするには、箇条書きなどでさらにポイントを明確にする必要がある。


ただ、すべてを理解してもらう必要はないし、向こうもそのつもりはないだろうと思うので、要点のみで理解してもらい、判断材料となる情報は十分に提供する姿勢ということで。

それぞれのポイントを明確化にする


細かくあげればたくさん出てきてしまうと思うが、関係者への説明では下記のポイントに絞って説明すれば効果的。すべてを理解してもらう必要はないので、ポイントを絞ってそこにフォーカスして説明してみよう。

  • 認証API
    • ひとつのサービスプロバイダに対して、多数の外部アプリケーションが利用
    • サービスプロバイダごとに仕様が異なり、それぞれの仕様に合わせる必要がある
    • "認証"だけでなく、リソースへのアクセス制御など"認可"の部分も担っている
    • 外部アプリケーションは、その認証APIを提供するサービスプロバイダの会員を引き込める
  • OpenID
    • 複数のOpenID Providerに対して、多数の外部アプリケーションが利用
    • 仕様が公開されているオープンなしくみで、仕様が統一されており個別に合わせる必要ない
    • "認証"に特化しており、"認可"の部分は担っていない
    • 外部アプリケーションは、"すべてのOpenID Provider"(GoogleYahoo!mixiはてなlivedoor)の会員を引き込める


こんな感じだろうか。

OpenIDは一対多だけでなく多対多の認証のしくみで、会員引き込みの効果が段違いに大きいけど、"認可"には踏み込んでないんです。


と、ひとことでうまくまとめてみる。



そして、やはり多くの人が知りたがるのは"で、っ結局何のメリットがあるの?"ってことなので、ここは


"集客力"に尽きるだろう。


sregとAXが普及するまでは、たぶんそれしかない。そして、sregとAXの部分までは、まだ説明しなくていい。認証APIとの違いを話している打合せでは、そこまで理解を一度に進めるのは実際難しいんじゃないだろうし。


時間があればOAuthについては少し


注意が必要なのは、認証APIのなかで一部仕様が分かれていることだ。おおまかに分けると、「認証の部分に特化した認証API」と「他のサービスAPIへのアクセスコントロールも行える認証API」の2種類がある。


大半が後者であるのが実情だが、ここを理解しておく必要がある。


いわゆる"認証"の部分だけで終わっているのが前者で、"認証"に加えて"認可"まで踏み込んでいるのが後者だ。後者はFlickrの認証APIがルーツになっている。OAuthの仕様もFlickrの認証APIをもとに考えられたものだ。


そのあたりの経緯が一部、下記の記事で書かれている。


APIアクセス権を委譲するプロトコル、OAuthを知る − @IT


"認証"の部分のオープンなしくみとしてOpenIDが普及していくと同時に、"認可"部分では"OAuth"が広まってきているという話も、時間があれば話しておくといいと思う。


GoogleはOpen Social APIとContacts APIYahoo!もFire EagleでOAuthをサポートし始めているし、Twitterやma.gnoliaも採用しているので、今後スタンダードになることは確実といえる。

それでも分かってもらえなければ・・・

OpenIDに対応もしていてかつUIがきれいなiKnow!あたりで、複数のOpenID Providerでのログインを実演してみるか、ゆーすけべーさんの下記の記事でも見せて、こちらは受身になってしばらく説明している相手を放置してみよう。自分の頭で考えさせ、質問してくるのを待ってみる・・・。


iKnow!で英語。ちょっとの努力で、大きな成果を。 - iKnow!

ゆーすけべー日記


それで、ダメなら・・・。