2009-08-29 17 views
19

私は最近、その認証メカニズムの1つとしてFacebook-Connectが必要なアプリケーションで作業することに契約しました。Facebook-connectまたはOpenID?開発者の視点から

Facebook Connectソリューションでは、シングルサインオン認証スキームが実装されていることを認識しています.1つのWebサイトにログインすると、すべてのユーザーにログオンします。個人的には、私はアプローチを気に入っておらず、あなた(開発者)が何らかの制御を持っている単一のプロセスを通してすべての認証システムを漏斗化しようとすると、それが困難である(不可能ではない)ことがわかります。ユーザーエクスペリエンスを若干向上させるだけの不必要なものを紹介しているとも思う(security issues (see Risks of Internet Deployment))。

私は、ブログの世界が、認証の聖杯としてFacebook-Connectに油を注ぎましたが、お互いの意見を反響し、「OpenIDが複雑すぎる」と強く訴えていることに気付きました。 。同時に、多くの著名な開発者やセキュリティ専門家が、この問題についてフラグを立てたり、意見を表明したりしているのを見たことはありません。私のOpenIDでの私の経験は、StackOverflowと関連サイトだけです。私はあまりにも最初のことを理解するのに苦労しましたが、一度私は自分のGoogleの資格でログインすることができたら、その経験は本当に滑らかであることが判明しました。

私は誰もが知っている何かを妄想したり、紛失したりしていますか? Facebook-Connectは本当にOpenIDの代替手段ですか、誰かがKool Aidを飲んでいますか?


EDIT:この作業を終えた後

、私はFacebookのコネクト・ログイン方式が理想的であることを確認してください。 iframe/js/cookie/reloadの全体が醜いので、簡単に問題になることがあります。既存の認証システムにfb loginを統合すること自体が練習です。あなたはいくつかの妥協をしなければなりません。私はどのようにそれをやったのか説明するために、他の記事全体を書かなければならないだろう。

Facebookはちょっと私にシングルサインオンに戸惑っているようです。ほとんどの人はfacebookが自分のサイトでOpenIDを有効にしていることに気づいていませんが、実装されている方法でさえ、SSOをエミュレートして、それを少し無意味にします。私はOpenIDがうまくいくと考えていました。あなたは新しいウェブサイトに行きます。あなたがOpenIdアカウントを持っているなら、あなたのプロバイダにログインしてURLを入力してください。

Fbには、OpenIDのログインが表示されていません。代わりに、まず登録してログインし、次にアカウント設定に行き、リンクされたアカウントの下でOpenIDプロバイダを選択する必要があります。しかし、ポイントを理解しているStackOverflowと違って、あなたのプロバイダにその設定を記憶させるよう指示した場合、FacebookはOpenIDでログインすることしかできません。どうして? SSOのようになります。あなたが覚えて欲しいGoogleのボックスをチェックしないと、OpenIDはFacebookで動作しません。

ログインは別として、facebook-connectは一般的に機能しますが、まだ丸みを帯びたコーナーがたくさんあります。私の髪の毛を引っ張ってそのapiで呪われたいくつかの事柄:

  • Facebookのドキュメントが散在していて、合理化されていません。オープンしてから1時間以内に、ブラウザに少なくとも10個のタブが表示されます。将来的に役立つと思われる興味深いトピックを見つけたときは、ブックマークを適切に書き留めてください。また、キーの記事が深刻に埋もれることがあるので、再度検索に頼らないでください。私は、APIを文書化するためのwikiのアプローチが、最近多くのプロジェクトを怠っていると知っていますが、一般的に、これはFacebookです。適切なユーザーガイドを提供するためにチームを雇う手段が必要です。だから、始める前に素敵なFacebookのブックマークフォルダを持っていることを覚えておいてください。
  • APIにはさまざまな方法がありますが、使い方の例を見つけて、本能に頼らざるを得ません。
  • 何度も何かがうまくいかないときは、誰もその理由を知りません。フォーラムのページにアクセスすると、仮説や噂の形で説明が与えられます。例えばログイン時に、他のアプリケーションでjsモーダルダイアログが表示されている場合、一部のアプリケーションでポップアップログインウィンドウが表示されるのはなぜですか?その動作を制御することは可能ですか?誰も確信していません。 Facebookは誰にも知らせずに何らかのテストを行っているという噂があります。
  • すべてが広告として動作するわけではありません。つまり、自分自身が機能を使用することを奨励され、学習に貴重な時間を費やし、実装し、デバッグし、try/catch例外ハンドラ内に配置するときにfacebook-connectで機能しないことがわかります。例えばfeed.publishUserAction
  • facebookは使いにくいです。彼らは、ほとんどの時間(擬似SQL + HTML)で動作することが証明されたより基本的なものを使用することで、開発者が困難な知識を活用できるようにする代わりに、半分の時間(xfbml)で動作するオートマティックAPIを押す貴重なリソースを浪費します。例えば私は、ajax/xfbml/jsの組み合わせを使用して自分のサーバーから友人の画像を取得しようと時間を無駄にしていました。これは、いくつかの要求に対してはうまくいくでしょうし、完全に動作しなくなります。私はその後、自分のデータベースから直接Facebookのクエリ言語(fql)を使ってデータを取得し、htmlで自分のマークアップを作成することに決めました。 100%働いた。あなたが本当の開発者であれば、私のアドバイスは、facebookが皆に食べようとする "すべてが簡単です"というマントラに買わないでください。そうではありません。プログラミングプラットフォームのfacebookクライアントAPI(PHP、Python、Javaなど)に慣れ親しんでいるだけでなく、fqlを使用してサーバーから直接引き出すことができるものと、JS Client APIのブラウザでできることfbjsと混同している)。あなたは、後の2があなたが大部分のことをするために必要なすべてであることが分かるかもしれません。

リストはそこで終わらないと思いますが、私の頭の上からそれがあります。

+0

大きな質問です! – typeoneerror

+0

@mike、私はそれを簡単に保つことに同意します - 可能な限りFQLとJavascript APIのみを使用します。それが私の友達ロケータウェブアプリでやっていることです。 –

答えて

6

警告を今の

はい、彼らはクールエイドを飲んでいます。 Facebook Connectは、プロプライエタリなプロバイダ依存のシングルサインオンとそれ以上のものです。 Facebookはダウンした、または信頼できないとみなされ、あなたは縛られています。

OpenIDはこれを迂回します。現時点ではユーザーエクスペリエンスの面で大きな問題がありますが、長期的には、単一のプロバイダーに依存することからシステムを解放し、すべてのトラフィックをフィルタリングするため、より良いソリューションです。さらに、その仕様と実装は、よりクリーンなようです - このJavaScript/IFrameのものはどれもありません。単純なHTTP要求とリダイレクト。これにより、ブラウザの互換性も向上します。

Facebook Connectはユーザーエクスペリエンスの問題を修正しましたが、ブラウザのサポートとプロバイダの選択を犠牲にしました。短期的な実利的な勝利ですが、長期的には良いアイデアではないと思います。

2

シングルサインオン方式は、主要なアプリケーションではかなり一般的です。 Gmailにログインすると、Googleのすべてのサービスにログインできます。私はアプリが相互に接続されている場合、特に重要なサービスであり、プロバイダーは裏側で働く最高のセキュリティーを持っているという意味では意味があると思う。

OpenIDについては、これも素晴らしいアイデアだと思いますが、OpenIDはそれほどアクセスできません。小規模および中規模のラングウェブサイトへのサインインに革命を起こすはずだったが、そうではなかった。それを使用している多くのウェブサイトがありますが、明らかに十分ではありません。ほとんどのウェブサイトでは独自のサインインスキームを使用していますが、別のプロバイダを使用して煩わしさや不安を感じることがあります。

しかし、私は遅かれ​​早かれOpenIDのようなものが出てくると思うが、それが働くためには背後に大きなプッシュが必要だ。誰かがGoogleを好きです。

あなたのGoogle IDを使用してサインインできたとしたらどうでしょうか?強い意見は次のとおりです。私はあなたがFacebookのコネクトと不快である必要はないと思うが、私はまだそれを自分自身を使用していないにもかかわらず、OpenIDのをお勧めします:)(無気力

+0

私は、関連サイトのネットワーク内でシングルサインオンに慣れています。そのようなネットワークの一部として私のサイトが扱われるという点は、認証プロセスだけが必要なときには得られません。 Btw、あなたはGoogleのIDでSOにログオンできます。私のポイントは、あなたのgmailウィンドウが24時間開いていても、あなたがSOにログインしようとすると、あなたのユーザー名/パスワードの入力が求められます。私がそれを好む開発者として、プロファイルを適切に初期化するために使用できる明確なフラグを受け取るためです。 –

+0

私は、OpenIDがFacebook Connectよりも「ネットワークログイン」の感触が劣ると思います。個人的には、私はFacebookがOpenIDに行くのではなく独自のプロトコルを発明したことに腹を立てています。私は結局彼らが完全にbonafide OpenID Provider *と* Relying Partyになることを願っています。そのバイアスを受けて、OpenIDルートを利用することをお勧めします。 –

+0

Googleでは、他のサービスにアクセスしたときに、特に以前にその製品にアクセスしていない場合は、再度ログインすることができます(ただし、あなたの名前を覚えています)。それは私の意見では良いことです。 – Neo42

0

Google Friend Connectを見ましたか?これはFacebook Connectと似ていますが、オープンIDベースであり、Google独自のものではありません。また、Open IDユーザーエクスペリエンスの問題を解決するようです。

rpxnow.comは、Open IDユーザーエクスペリエンスの問題を解決するうえで非常に役立ちます。

関連する問題