1

次のようにプロトタイプアプリケーションを作成しています。

  1. ノックアウトjsを使用したhtml Webサイトがあります
  2. qQuery/Ajax を使用して、Web API サービスと通信します

許可されたユーザーのみがサービスにアクセスできるようにします。そのため、ユーザー名/パスワードに基づいてユーザーを検証できるセキュリティを作成しました

次に、クライアントが API サービスとのさらなる通信に使用する何らかのタイプのトークンをクライアントに返す必要があると思います。

私が知りたいのは、これがクライアントにどのように保存され、次の呼び出しのためにサーバーに再度渡すことができるかということです。

4

4 に答える 4

1

クライアントが HTTPS 経由でユーザー名とパスワードを渡す最初の呼び出しを行い、トークンを取得すると仮定します。あなたの質問は、トークンを保存する方法ですか?あなたのアプリケーションはSPAだと思います。もしそうなら、なぜそれを JavaScript 変数に保存しないのでしょうか? Cookie を使用しない場合は、XSRF を回避します。もちろん、ユーザー名とパスワードがクライアント側に保存されないようにする必要があります。また、トークンの有効期間トークンは有限であり、できればできるだけ小さくする必要があります。

編集:

すべてのページでトークンを再生成できる場合 (SPA ではないため)、それはさらに優れており、トークンの寿命を非常に短くします。このようなコードを使用できます。私は Authorization ヘッダーとベアラースキームを使用していますが、標準化が必要ない場合は、独自のスキームを使用することもできます。

var accessToken = ''; // Write out the token into this variable in the server side (view)

$.ajax({
    type: 'GET',
    url: 'http://whatever',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    headers: { 'Authorization=': ='Bearer ' + accessToken },
    success: function (data) {
        
    }
});
于 2013-07-05T17:36:16.707 に答える
0

そのため、ユーザー名/パスワードに基づいてユーザーを検証できるセキュリティを作成しました

この文は基本的に、サービスを呼び出すことができるようにするために、ユーザー名とパスワードを JavaScript ファイルに保存する必要があることを意味します。これがあなたが現時点で望んでいることではないことを願っています. その場合は、私の回答を読むのをやめて、ユーザー名とパスワードを JavaScript ファイルに保存してください。

この段階では、セキュリティを別の方法で処理する必要があることは明らかです。Web API は、ユーザー名とパスワードではなく、トークンで保護する必要があります。これが実際にどのように機能するかを次に示します。ユーザー名とパスワードを取得して検証し、成功した場合はトークンを返すアクションがあります。このトークンには、暗号化されたユーザー名が含まれる場合があります。したがって、JavaScript はユーザーにユーザー名とパスワードを要求し、Login メソッドを呼び出すと、トークンを保存できます。その後、後続の呼び出しでこのトークンを使用します。API は、ユーザー名を抽出するために暗号化を解除します。

于 2013-07-05T15:56:14.237 に答える
0

一度承認された md5(username) md5(password) のサーバー側セッションを作成します。リクエストごとに uuid を生成し、レスポンスで返します。基本モデルはトークン交換と呼ばれ、SSL なしでも信頼性があります (ミットなし)。

于 2015-04-27T11:03:30.073 に答える
0

私が知りたいのは、これがクライアントにどのように保存され、次の呼び出しのためにサーバーに再度渡すことができるかということです。

クッキー。トークンを Cookie として送信し、ユーザーがページを要求すると自動的に送信されます。

于 2013-07-05T16:02:36.580 に答える