web-dev-qa-db-ja.com

アプリケーションにOAuthを実装するにはどうすればよいですか?

次のことを行う必要があるクライアント用のアプリケーションを作成しています。

  • ユーザーがGoogle、Facebook、Twitter、LinkedInを使用して認証できるようにします。
  • サインアップ後にユーザーがプロバイダーを追加できるようにします。 (つまり、ユーザーがGoogleで認証されている場合は、他のプロバイダーのいずれかまたはすべてを追加できるはずです。)
  • カスタムの連絡先リストを作成するために、ユーザーがGoogleの連絡先、Facebookの友達リスト、Twitterのフォロワー、Linkedinの友達をインポートできるようにします。

これについて学び始めるのに最適な場所はどこですか? .NETでこれらのことに誰もが使用する標準はありますか?私は数時間グーグルをしていて、ほとんどの人が指摘しているようですが DotNetOpenAuth ライブラリの使用方法に関する確かなチュートリアルが見つからないようです。ダウンロードにはサンプルが付属していますが、それでも私は混乱しています。

私はそれが次のように単純であると思いました:

  • プロバイダーのシークレットを構成します。
  • プロバイダーでログインを開始します
  • 認証Cookieでユーザーを認証します
  • データベースにユーザーレコードを作成し、プロバイダーからの一意のIDを保存します。

しかし、すべてのプロバイダーが独自のコードセットを持っているようで、すべてが非常に異なり、混乱を招きます。 Facebookにはグラフオブジェクトがいくつかあり、Twitterには私が理解できない「InMemoryTokenManager」がいくつかあり、Googleには認証の例すらなく、Googleアドレス帳の例しかありません。それに加えて、サンプルのApplicationBlockデモからコードの一部を何らかの理由で独自のアプリにコピーする必要があり、何をしようとしているのかを知らずにすべてをコンパイルするのは骨の折れる作業です。

これらすべてに根本的な何かが欠けているような気がします。

この時点では、本の推薦でさえ素晴らしいでしょう。

OAuthの高レベルの概念を理解していると思いますが、核心に飛び込もうとするとすぐに迷子になります。

13
Chev

まず、デフォルトのasp.netテンプレートにこれらの言及されたプロバイダーのほとんどの認証コードが付属しているnet 4.5を使用している場合、外部ライブラリを使用しても意味がありません。

次に、oauth2認証の詳細に関する優れたチュートリアルがまだ必要な場合は、Ben Fosterによるこのすばらしい投稿をご覧ください http://ben.onfabrik.com/posts/oauth-providers

第三に、残念ながら、認証以外のものが必要な場合、単一のプロトコルはありません。したがって、各プロバイダーには、連絡先、投稿など、これらの追加データを公開する独自の方法があります。それについては多くのことを行うことはできません。oauth2とは関係ありませんが、特定のAPIを呼び出す方法にすぎません。 oauth2認証に基づくrest/xmlWebサービスとして公開されます。これは、認証のみを行う場合、プロトコルは各プロバイダーでほぼ同じであることを意味します。それ以上のものは具体的です。

第4に、内部IDではなく、プロバイダーから返された電子メールアドレスを使用します。すべてのプロバイダーがIDをサポートしているわけではありませんが、すべてのプロバイダーがユーザーの電子メールを返すことができます。また、プロバイダーがoauth2経由でメールを返す前にメールを確認するため、この情報を信頼できます。

6
Wiktor Zychla

PureKromeのWorldDominationを使用することをお勧めします。使用するのは簡単で、十分に文書化されており、非常に便利です。

https://github.com/PureKrome/WorldDomination.Web.Authentication

Twitter、Google、Facebookなどをシンプルな1行の構成で処理し、その他すべてを処理します。

作成者はnjabbr.netにもよくぶらぶらしています。

2
Moo

ASP.NET MVC4の「インターネットアプリケーション」テンプレートにはDotNetOpenAuthが実装されています。まだ実装していない場合は、それを確認する必要があります。

1
Malcolm O'Hare

Social Bootstrap API プロジェクト(servicestackを使用しますが、これらすべての流行語テクノロジーが読みやすいサンプルで連携しているのを見るのは素晴らしいことです)を見てください。

また、OAuthがどのように機能するかをよりよく理解したい場合は、 Mashapeには適切な説明があります 。これにより、ほとんどの舞台裏を見ることができます。ラッパーが実装します。

Rick Strahlに例があります 何年も前にMVCにOpenIDを実装するために使用しました。少し古いですが、当時最も簡単な実装の1つでした。その実装で構築したいくつかの顧客サイトは、まだ正常に実行されています。

0
Zachary Yates