私はC#を使用していくつかのRESTfulWebサービスを開発しました。サービスは非常に機密性の高いデータを通過して取得するため、サービスを認証するための最良の方法を誰かが私に提案できますか(フォローするリソースがいくつかあります)。
6 に答える
RESTfulサービスにWebAPIを使用していますか?または、非推奨のRESTスターターキットを使用して開発しましたか?
WebAPIを使用している場合は、次のリンクをたどることができます。
http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-membership-provider/
Standard Authorize属性を使用できます。また、そのクラスを拡張してニーズに合わせてカスタマイズし、セキュリティで保護されたチャネルにhttpsを使用することもできます。
APIキーの使用をお勧めします。これがフォローする投稿です。 http://blogs.msdn.com/b/rjacobs/archive/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4.aspx
これにより、必要なセキュリティをシンプルに提供し、httpsやクライアント証明書の使用などのセキュリティをさらに追加することを妨げることはありません。
これにはいくつかの方法があり、最終的な解決策はおそらくそれらを組み合わせて使用する必要があります。まず、HTTPSエンドポイントのみを公開します(そして適切な証明書を取得します)。可能であれば、Windows認証を使用し、アクセスを特定のユーザーのみに制限します。また、入ってくる特定のデータ要素を暗号化する(そしてC#コードでそれらを復号化する)こともできます。
同様の状況で、リクエストごとにhttpsと2つの追加の2つのパラメーターを使用しています。それらはユーザー名と暗号化されたパスワードです。
私は簡単な解決策を知っていましたが、それは非常に単純で簡単
です。サービスのクエリパラメータとしての有効なキーなど、いくつかの一般的な入力パラメータを検証し、サービスで検証することで、サービスリクエストを承認できます。成功した場合は、UnAuthorizedと言って失敗します。JVMサーバーでは、実際のキーを取得でき、サーバーに着信キーの認証を要求します。C#については知らない... HTH
認証について非常に懸念している場合、最良の方法の1つは、SSLクライアント証明書を使用することです。システムのユーザーごとにSSL証明書を作成して発行し、サーバーに接続するときに(明らかに、SSLを介して)その証明書を使用します。Webサーバーに固有のAPIを使用して、それらが認証されたユーザーであることを確認できます。