1. ホーム
  2. wcf

[解決済み] REST API / ウェブサービスを保護するためのベストプラクティス [終了しました]。

2022-03-19 08:06:07

質問事項

REST APIやサービスを設計するとき、セキュリティ(認証、認可、アイデンティティ管理)に対処するための確立されたベストプラクティスはありますか?

SOAP APIを構築する場合、WS-Securityをガイドとして持っており、このトピックに関する多くの文献が存在します。RESTエンドポイントのセキュリティについては、あまり情報を見かけません。

RESTは意図的にWS-*に類似した仕様を持っていないことは理解していますが、ベストプラクティスや推奨パターンが出現していることを期待しています。

何か議論や関連文書へのリンクがあれば、非常にありがたいです。 もし重要であれば、私たちは.NET Frameworkのv3.5を使用して構築したREST API/サービスに対して、POX/JSONシリアライズメッセージでWCFを使用することになるでしょう。

解決方法は?

tweaktさんがおっしゃるように、Amazon S3は良いモデルだと思います。彼らのリクエストシグネチャは、偶発的および悪意のあるリクエストの再生から保護するのに役立ついくつかの機能(タイムスタンプを組み込むなど)を持っています。

HTTP Basicの良いところは、ほぼすべてのHTTPライブラリがサポートしていることです。もちろん、ネット上で平文のパスワードを送ることはほぼ例外なく悪いことなので、この場合はSSLを要求する必要があります。SSL を使う場合、ダイジェストよりもベーシックの方が望ましいです。 なぜなら、たとえ呼び出し側が認証が必要であることを知っていたとしても、 ダイジェストでは nonce 値を交換するために余計なラウンドトリップが必要になるからです。ベーシックでは、呼び出し側は単に初回に認証情報を送信するだけです。

クライアントのアイデンティティが確立されれば、認証は単なる実装上の問題に過ぎません。しかし、既存の認可モデルを持つ他のコンポーネントに認可を委ねることができます。Basic の良いところは、クライアントのパスワードのプレーンテキストコピーをサーバーに保存し、必要に応じてインフラ内の別のコンポーネントに渡すことができることです。