2011-02-09 20 views
5

現在、社内アプリケーションがユーザーの認証に使用するSOAPベースのWebサービスがあります。基本的に、ユーザー名とパスワードを使用してSOAPリクエストを送信します。 Webサービスは、データストアに対してユーザーの資格情報を認証し、認証に成功するとユーザー情報を返します。 Webサービスは、基本認証とSSLを使用して保護されています。RESTサービスへの機密情報の送信

このWebサービスを変更する必要があり、RESTサービスとして書き直すことを検討していました。私が過去に作成したRESTサービスは、かなりシンプルで、セキュリティの必要もありませんでした。

まず、機密クエリパラメータ(ユーザー資格情報)をRESTサービスに安全に送信するためのベストプラクティスがありますか?私はまだ基​​本認証とSSLを使用することができます。

第2に、POSTを使用してRESTサービスにクエリを送信した場合でも、まだRESTfulと見なされているか、RESTクエリにGETが必要ですか?

+1

私は、同じトピックで、次のStackOverflowのQ&Aを読んでお勧めします:http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service –

答えて

3

REST WebサービスでもSSLと基本認証を使用できます。

通常、HTTP GETはデータ取得(クエリ)に使用されますが、HTTP POSTも使用できます。 GETは、あらゆるタイプのHTTPキャッシングを使用できる場合に特に便利です。 POSTは、クエリを定義するために大量のデータを転送する必要がある場合や、単純な引数の代わりに複雑なデータ形式を期待するWebサービス操作が必要な場合に便利です。

0

SOAPからRESTへの移行は、セキュリティが強化される限り、一歩前進しています。

限りのベストプラクティスは:

  • 独自のセキュリティをロールバックしないでください。ピアレビューおよびテスト済みのframeworkまたは既存のライブラリを使用してください。
  • 暗号化されていない静的キーは渡さないでください。 HTTP Basicを使用しており、それを有線経由で送信する場合は、暗号化します。
  • 最も安全なので、理想的には、ハッシュベースのメッセージ認証コード(HMAC)を使用します。

Why REST security doesn't exist

+0

RESTセキュリティーが存在しない理由 - ページが見つかりません。 –

1

代わりのREST経由で認証を行って、あなたはまた、Webサービスと連携しで使用するために、ネットワーク認証プロトコルを検討するかもしれません。 KerberosやOAuthのような技術は、この種のユースケースに対応するように設計されています。あなたの質問に答えるために

は、しかし:

  1. RESTはHTTPと関連プロトコルを活用するためにあなたを奨励するので、SSLおよびBASIC認証を使用することは非常に適切です。

  2. RESTは、GETとPOSTだけでなく、PUTやDELETEなどの他のHTTP "動詞"の使用を推奨します。副作用のない冪等の操作にのみGETを使用してください。

関連する問題