13

私は大きなウェブサイトを作成していないので、私は主にopenidのユーザーであり、さまざまな実装があります。私はここSOでopenidを使用していますが、Gmailアカウントをすべてに使用しているので気に入っています(将来はGmailを終了する予定ですが、現在はすべてに使用しています)。覚えておく必要はありません。別のログイン/アカウント。

したがって、私の素朴なユーザーの考えでは、openidの使用は簡単だと思います。プロバイダーがたくさんある場合、ユーザーがログインしようとすると、アプリはプロバイダーに「この人はログインできますか?」と尋ねます。プロバイダーは戻ります。 「このユーザーは有効です」一部のデータ(一部のユーザーは他のユーザーよりも多くのデータを返す場合があります)、またはログインに失敗した場合などに何も返さない場合があります。

私は将来のウェブサイトでopenidを使用することを計画していました。私の考えでは、これを「抽象化」できる何らかのlibを使用していると思います。ユーザーはプロバイダーにログインし、アプリはそれぞれを認識せず、このlibはユーザー名から一意の識別子を返します。プロバイダー。例:myemail@gmail.comはログインに使用されます。libに一意のIDがあり、ハッシュ計算などの後に返されます。アプリはこれをすべてに使用します。

私のアプリケーションでは、openid libmによって作成されたこのIDのみを処理しようとしますが、Facebook、Twitter、Gmailなどを処理します。たぶん、このlibにはプロバイダー名のテーブルがあり、ユーザーが最初にサイトにログインしたときに、データベースに「この一意のIDはTwitterからのものです」という行があります。理論的には、これは私の頭の中でうまくいくようです。

...しかし、Openidは悪夢ですを読んだ後、私は、完璧に機能するようなlibを見つけようとしても、本当に良いアイデアかどうかを考え始めています。

すべての人(openidプロバイダー)が独自のログインメカニズムを持っているので、1つのシステムだけを心配するのではなく(私自身、私は自分のログインメカニズムを作成することになりました)-今は数十のシステムを心配する必要があります-そしてopenidは対処することになっていますまさにその通りです。今、私はこの混乱全体を抽象化するために私が想像している巨大なライブラリが必要です。

私が説明したようなライブラリは存在しますか?もしそうなら、少なくとも本当に「オープンな」夢のように振る舞うことを試みるアプリケーションを作成することは可能ですか?

(openidはfacebook authなどと同じではないことを知っています...しかしエンドユーザーの観点からは、「Webサイト間で同じログインを使用する」という同じIMHOです。プロトコルがなかったとしてもログインプロセスを抽象化したいです。多くのサービスでは、誰かが彼女が主張している人物であるかどうかを知る必要があります。)

4

5 に答える 5

11

ライブラリ(DotNetOpenAuthなど)は存在しますが、これらは通常、プロトコルと仕様を抽象化するだけです。アプリケーションは、個々のプロバイダー(およびその癖)を認識している必要があります。

私の意見では、OpenId / OpenAuthの最大の問題の1つは、多くのプロバイダーがわずかに異なることを行うことです。プロバイダーの中には、要求する情報を提供するものと提供しないものがあります。Simpleregistration / Claimに応答するものもあれば、AttributeExchange/Fetchに応答するものもあります。ログオンに一般的なURLを使用するものもあれば、ユーザー名が組み込まれたURLが必要なものもあります。

多くの微妙な違いがあり、OpenIdを本来よりもはるかに弱くしています。理想的には、私が(Webサイトの所有者として)実装できるシステムである必要があり、OpenIdプロバイダーのアカウントを持つすべてのユーザーをサポートできると確信しています。現実はかなり異なります。また、認証にOpenIdを使用している場合でも、常に独自のIDでユーザーを追跡する必要があります。

RPX / Janrainのように、これらの厄介な詳細をすべて処理することを目的としたサービスがありますが、これでも頭痛の種があると聞いています(たとえば、引用した記事で言及されています)。

結局のところ、それはおそらくあなたが運営しているウェブサイトのタイプに帰着します。この(かなり皮肉な)質問を自問してください-個々のユーザーがログインできない場合、どのくらい気にしますか?答えが「たくさん」である場合(各問題はあなたにお金がかかるか、他の悲しみを引き起こすため)、おそらく今のところopenIdを忘れてください。それがstackoverflowのような大量/無料のウェブサイトであるなら、それは行く方法かもしれません。


アップデート

ここにいくつかのプロバイダー実装の比較があります:http ://spreadopenid.org/provider-comparison/ 。ただし、更新されていないため、古くなっている可能性があります。 [現時点では、おそらく永久にダウンしていますが、グーグルのキャッシュを参照してください]

ウィキペディアのプロバイダーのリストからより多くの情報を見つけることができるかもしれません

ここには、プロバイダーのかなり包括的な比較もあります。

于 2010-11-23T12:02:19.583 に答える
1

あなたが説明しているのは、OAuth がどのように機能するかであり、openid の後継者のようなものです (「後継者」という用語を大まかに使用すると、OpenID よりもはるかに多くの牽引力が得られます)。 ruby​​ では、いくつかの実装が利用可能であり、特に janrain のものです。 Engage 製品と最近では Intridea の omniauth ライブラリ。私は Engage を使用して気に入っていますが、omniauth は非常に簡単に機能するように見え、Janrain のサービスに依存しないという点でよりオープンです。

于 2010-11-28T04:18:36.237 に答える
1

プログラミング言語が指定されていません。

Java の場合は、socialauth を参照してください: http://code.google.com/p/socialauth/

于 2010-11-27T20:03:49.017 に答える
1

すべてを処理するライブラリがありますが、使用しているテクノロジに依存します。私はDjango でdjango-socialauthを使用しましたが、これは優れています (Twitter、Facebook、Gmail、Yahoo、および OpenID による認証をサポートしています)。ここには、利用可能なライブラリの大きなリストがあります

于 2010-11-27T02:40:16.277 に答える