2

HTMLとknockoutjsをクライアントとして使用するアプリケーションを構築しています。これは ajax 呼び出しを使用して、サーバー側の WepApi サービスと通信します。

私はこれのセキュリティ面を調べ始めましたが、サーバーとのこのタイプの RESTful 通信でユーザーを認証するためのすぐに使えるソリューションはないようです。基本認証以上のものを必要としています。私は HMAC を調べました。これは良い解決策のようですが、この場合、ユーザーが秘密鍵を取得する方法がわかりません。

このタイプのシステムに通常実装されている適切なパターンまたはプラクティスのポインター、提案を誰でも提供できますか

ありがとう

4

1 に答える 1

2

HMAC ベースの認証には、 Eran Hammer によるhawkスキームがあります。これは、 Pabloによる .NET 実装です。私もごく最近、bitbucketで利用できるものを作成しましたが、私のものは ASP.NET Web API 専用です。

JavaScript で HMAC ベースのものを使用する際の問題は、JavaScript が共有秘密鍵にアクセスできる必要があることです。これは、必要に応じて望ましい場合と望ましくない場合があります。HMAC ベースのソリューションは通常、共有対称キーを使用します。つまり、送信者と受信者の両方が同じキーを共有し、それを使用して相手側が検証する HMAC を作成します。これは、厳密には公開鍵と秘密鍵の非対称鍵ペアではありません。

HMAC ベースのソリューションに代わる方法は、Web API への認証に使用できる JWT などのトークンを発行する認証ブローカーを使用することです。トークンの利点は、キーやユーザー ID/パスワードと比べて、通常は有効期間が短いことです。ここでは、OAuth 2.0 の暗黙的な許可フローを使用するか、標準プロトコルを使用せずに POST などを実行して、発行者からトークンを取得できます。独自のものを展開する前に、たとえばthinktecture identity serverなどの既存の実装を再利用することができます。

于 2013-06-18T13:36:03.430 に答える