Webサービス呼び出しを認証するトークンシステムを作成する最良の方法は?
-
07-07-2019 - |
質問
モバイルデバイス、winformsアプリケーション、iphone、blackberryなど、さまざまなプラットフォームで呼び出すことができるWebサービスアーキテクチャを作成したいと思います。したがって、WCFやwsHttpバインディングのようなものを使用すると、おそらくこれが殺され、互換性のために基本的なHttpバインディングにダウングレードする必要があります。
それでは、最初のログイン(認証)でトークンを生成し、その後のすべての呼び出しにこのトークンを使用して認証を検証し、メソッドの実行を許可するシステムが必要です。
これについてのヒントや提案はありますか? 1)トークンを生成し、安全なトークンに含まれるものは何ですか? 2)トークンの有効期間。一部のユーザーは、アプリケーションを数時間、場合によっては「スリープ」状態で使用することがあります。彼らのコンピューター
アドバイスをありがとう。
解決
最初の認証でサーバーから与えられた1つのトークンのみを使用している場合、それがインターセプトされた場合、すべての要求に使用できます。唯一の防御は有効期限です。
それ以外は、実装オプションに依存します。
より安全なシステムは、各要求にタイムスタンプ(および場合によってはナンス)を追加し、署名して、各要求に含めることです。クライアントが認証資格情報を処理し、署名の実装を認識し、各リクエストに署名する必要があります。
代わりに、各リクエストでサーバーを認証させる(OpenIDで実行可能)か、または必要なときに多くのトークンを配布して再認証する(OAuthで実行可能)こともできます。クライアントが資格情報を保存できる場合、これらはユーザーには見えない可能性があります。これらはより複雑で、一部の対話にはSSLなどの暗号化されたトランスポートが必要であり、HTTPリダイレクトを話し、Cookieまたはその他の保存された状態を処理できるクライアントが必要です。クライアントは署名の方法を知る必要はありませんが、SSLを使用できる場合は、そもそも複雑さは必要ないでしょう。
クライアントに依存しない必要がある場合は、リクエストに署名することをお勧めします。
実装、例、およびライブラリの署名については、Amazon Webサービス、OpenID、またはOAuthをご覧ください。
トークンの有効期限については、ニーズによって異なります。トークンの寿命が長くなると、ウィンドウリプレイ攻撃が増加します。ナンスはトークンを使い捨てにしますが、サーバー上でより多くの状態を必要とします。
他のヒント
OAuth をチェックアウトする必要があります。これはAPI認証の標準であり、おそらく既存の実装をサービスにプラグインすることができます。