2011-12-24 13 views
0

お世話になりました。APIを保護するための推奨される方法/認証エンジン

背景

私は、APIを介してサードパーティのウェブサイトのための情報/データの特定の部分をホストすると、認証要求を介してアクセスする必要があるアプリケーションを設計しています。

OAuthはこれについて行く方法ですか、そこに何か良い点がありますか?サードパーティのサイトのドメインがわからないので、ホストヘッダー(これはとにかく偽装することができます)に頼ることはできません。

APIへのリクエストは、おそらくクライアント側のjQueryまたは通常のJavaScriptから発生します。私のAPIからのデータを要求している第三者のウェブサイトを確保するための最良の方法は何

質問

は、彼らがあると言う人であり、彼らが要求している情報にアクセスすることを許可されていますか?

多くの感謝!

マット

答えて

1

のOAuth、特にOAuthの2は(まだ確定されていない)、おそらくあなたのために働くだろう。しかし、ウェブリクエストは、これらのウェブサイトをホストするウェブサーバではなく、ブラウザから来ているので、個々のブラウザはそれぞれのドメインではなく認証されなければならない。

それでは、バックステップと、この質問をしてみましょう:

は、あなたのAPIは、Webサイトのドメインごとに、個々のユーザーごとに一意または一意の露光されたデータですが?つまり、APIの所有者がドメインにアクセスすることを契約上許可するのか、個々のユーザーがAPI経由でデータにアクセスできるのか、これらのユーザーは自分のデータにアクセスするためにこれらの他のドメインを承認する必要がありますかあなたのサービス?

ドメインを許可する場合(ユーザではなく)、ブラウザは、APIに対する許可されたリクエストの発信元になることはできません。これは、これらのドメインのWebサーバーがクライアントに秘密鍵を発行しなければならないため、制御を失ったユーザーは誰でもこれらの認証された呼び出しを行うことができます。これは、セキュリティ上、「クライアントを信頼できない」原則です。

これらのサードパーティのサイトの1つを訪問する各ユーザーは、Webサイトがログインするためにブラウザをサービスにリダイレクトするワンタイムセットアップを実行する必要があります。 [第三者サイト]が自分のデータにアクセスできるようになり、その後、そのサイトにリダイレクトされます。その後、サイトにアクセスするたびに、サイトはそのユーザーに固有の秘密キーをダウンロードでき、クライアントのJavaScriptからこれらの承認されたAPI呼び出しを使用することができます。

+0

この素晴らしい入力のAndrew!ありがとう!データは必ずしも最初はユーザ中心である必要はありませんが、理想的には、APIは将来のために十分な柔軟性があります。最終的に、特定のデータストリームを他のWebサイト(顧客)に提供したいと思います。特別な中間層コードは必要ありません。これは、開発中のjQueryプラグインを組み込んで、HTMLタグに特定の属性を追加することによって実現されます.HTMLタグの解析後、データのajax呼び出しがトリガーされ、返されたデータがHTMLに挿入されます。タグ。 –

+0

データストリームは特定のサイトに固有のものであるため、他のウェブサイトの所有者が所有していないデータを呼び出すために特別なHTML属性を使用することは望ましくありません。希望は意味をなさない。再度、感謝します! –

関連する問題