2009-05-19 17 views
25

新しいRESTベースのAPIを私たちのインフラストラクチャに実装したいと思っており、OAuthが道にあるようです。2足のOAuth - 情報を探す

私たちの実装では、最初にサーバーからサーバーへのアクセスがあり、完全に制限されません。私はこれが二足歩行の承認と信じています。

その後、APIをブラウザで使用することが許可されます。これにより、認可が三脚になります。

これを実装するための出発点はありますか?どのようにしてサーバーを完全に認証し、ユーザーごとに制限された権限を追加することができますか?

これらのシナリオでは、OAuthの仕様はあまり役に立ちませんが、これはサーバー間アクセスのセッションを無期限に作成する必要があることを意味し、 APIのみ。

私は詳細を知りたいと思っています。

私のためのOAuthですか?私は認証された要求システムのみを探しており、このシナリオではコンシューマーとサービスプロバイダだけが存在します。エンドユーザは遊びに来ません!

答えて

2

OAuthは私たちのニーズにあまりにも難しくなります。私は、Amazon S3の認証方式を採用することを決めました。なぜなら、モデルがより良く適合しているからです。しかし答えを見つける手伝いのため

おかげ..

5

認証と認可を区別することを忘れないでください。いくつかの場所では、私はOPが2つを混ぜると信じています。

たとえば、サーバーが誰かを認証すると、通常明示的または暗黙的に(Cookieを使用して)後続の要求がすでに承認されるように認証トークンが提供されます。

資格情報がどれくらい続くかはサーバーによって異なります。 計画では、資格情報がある時点でタイムアウトになることは賢明です。 「許可期限切れ」のエラー応答を受信するたびに、クライアントサーバーが自身を再認証する準備をしてください。

ので、あなたは、「期限はありません」セッションを提供しようとする必要はありません。すべてはいくつかの時点で期限が切れる

  1. 。たとえば、電源が失われたり再起動された場合、クライアントサーバーはアプリケーションに再度アクセスすることができますか?

  2. 柔軟性のないシステムを作成しています。彼らはより頻繁に壊れやすい傾向があります。

  3. 今後2種類のログイン(サーバークライアントとブラウザクライアント)ではなく、追加の種類のログインを追加することがわかっているので、現在は1種類のログインのみを作成しています。クライアントサーバーの追加作業は、「必要に応じて再ログイン」機能を実装することです。
+0

こんにちはラリー、 A決して期限切れないセッションが一般的である、と私たちはときにサーバーが再起動セッションを失うことを意味するものではありません。セッションは、複数のデータベースとmemcachedインスタンスに格納されます。セッションでは、私は '永続的なトークン'を意味します。 Facebookはこれを例えば使用しています。 – Evert

+0

最後に、現在のシステムでは「APIキー」が使用されています。これはセキュリティ上問題がありません(いくつかの変数に基づいてHMAC-MD5を使用する方がよい)ので、apiキーは決して終わらないはずですエンドユーザーのマシンで実行されます。これが私がオオシュに行った理由です。 – Evert

48

Ya、OAuthはおそらくあなたのためです。

実際には2つのOAuth仕様、3-leggedバージョンと2-leggedバージョンがあります。 3足歩行バージョンは、ほとんどの注目を集めるもので、ではなく、を使用します。

2足版はまさにあなたが望むもので、アプリケーションが共有秘密鍵(AmazonのWebサービスモデルに非常によく似ていますが、HMAC- SHA1署名方式)または公開鍵/秘密鍵方式(署名方式RSA-SHA1を使用)を使用します。悪い知らせは、まだ3足版とほぼ同じくらいサポートされていないということです。そうしなければならない場合よりももう少し作業をしなければならないかもしれません。

基本的に、2足のOAuthは、現在の日付、「ノンス」と呼ばれる乱数、およびリクエストのパラメータを含むいくつかのフィールドに「署名」する(ハッシュを計算する)方法を指定します。これにより、が非常に難しくなります。 Webサービスへの要求を偽装します。

OAuthはゆっくりとしていますが、確かにこの種のものの受け入れられた標準になっています。あなたがそれを受け入れるならば、人々はそのために利用できるさまざまなライブラリを活用できるため、

初心者よりももっと精巧ですが、多くの人が多くの時間を費やして、何かを忘れていないことを知っていることが良いニュースです。素晴らしい例は、最近TwitterがOAuthセキュリティのギャップを見つけ、コミュニティが現在閉鎖中に取り組んでいることです。あなた自身のシステムを発明したならば、あなた自身でこのすべてのものを見つけ出す必要があります。

幸運を祈る!

+0

偉大な答えクリス。私は誰もDotNetOpenAuthで2足のプロバイダの経験を持っているとは思わない? –

関連する問題