.NET MVC4 の上に構築された Backbone/RequireJS アプリケーションがあります。フォーム認証を使用して、バックエンド データ ストアに対してユーザーを認証していますが、これはうまく機能しています。
当社のサービス レイヤーは .NET Web Api プロジェクト (RESTful API) であり、トークン化された認証アプローチを使用しています (最初の要求には基本認証ヘッダーが含まれます。認証が成功すると、応答ペイロードには認証トークンが含まれます。後続の要求はトークンを渡します)。
私がよくわからないのは、サービスレイヤーに対して認証する方法です。認証ヘッダーを渡す必要があると確信していますが、JSにユーザー名/パスワードがないため、トークンを生成する方法がわかりません。
ここでフォーム認証を完全にバイパスし、単純に SSL 経由で ajax リクエストを行う必要がありますか? 同様に /Account/Login アクションに POST し、メンバーシップ プロバイダーを使用して資格情報を検証できます。成功した場合は、最初のリクエストに Auth ヘッダーを追加し、後続のリクエストに認証トークンを使用できます。
ここに認証ヘッダー/カスタム トークンを追加する例:
$.ajaxSetup({
'beforeSend': function (xhr) {
if($.cookie("AuthToken")) {
xhr.setRequestHeader("CustomTokenHeader", $.cookie("AuthToken"));
} else {
var token = methodToBase64EncodeUsernamePassword(username, password);
xhr.setRequestHeader("Authentication", "Basic " + token);
}
}
});