アプリを作成し、常に認証を強制するアプリケーション コントローラー(ベース コントローラー) を持っています。必要に応じて、派生コントローラー内でこれをオーバーライドできます。このコントローラーには [Authorize] 属性があります。
Nhibernate セッション、ロガーなどにアクセスするために、アプリケーション コントローラーから派生したApi ベース コントローラーの作成を開始しました。
私のアプリケーションでは、FormsAuthentication を次のように設定していることを確認します。
var cookie = FormsAuthentication.GetAuthCookie(Name, false);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var expiration = DateTime.Today.AddDays(5);
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, expiration,
ticket.IsPersistent, value.APIToken, ticket.CookiePath);
var encTicket = FormsAuthentication.Encrypt(newTicket);
cookie.Value = encTicket;
cookie.HttpOnly = true;
HttpContext.Current.Response.Cookies.Add(cookie);
私のApiにも同じことが必要ですか? 理想的には、ヘッダーまたはクエリ文字列を介して提供される認証を使用して、すべてのリクエストでユーザーを認証したいと考えています。
site.com/api/v1/projects?clientid=xxx&token=xxxxxxxxxxx
Api コントローラーへのリクエストは、属性 [AllowAnonymous] がある場合にのみ機能します。
API 呼び出しを認証する最良の方法は何ですか?