1

FormsAuthenticatedMVCアクションを呼び出す必要のあるWindowsアプリケーションがあります。問題は、WindowsアプリケーションからFormsAuthenticatedMVCアプリケーションへの呼び出しを認証する方法がわからないことです。

次のコードはログインページを返します。以下のコードを何らかの方法でフォーム認証で機能させる方法はありますか、またはこれを機能させるために基本認証を使用する新しいWeb APIプロジェクトを作成する必要がありますか?

WebRequest req = WebRequest.Create("http://myurl/protectaction");
req.Credentials = new NetworkCredential("username", "password");

var res = req.GetResponse();

ご助力ありがとうございます、

リチャードヒューズ

4

1 に答える 1

3

CookieContainerを使用して、LogOnアクションによって発行されるFormsAuthenticationCookieを保存できます。したがって、基本的には、最初のリクエストをLogOnアクションに送信してから、同じWebRequestインスタンスを後続のリクエストに再利用します。

このようにして、クレデンシャルをネットワーク経由で1回だけ送信します。

例えば:

var container = new CookieContainer();

var req = (HttpWebRequest)WebRequest.Create("http://myurl/account/logon");
req.CookieContainer = container;
req.Method = "POST";
using (var writer = new StreamWriter(req.GetRequestStream()))
{
    var data = HttpUtility.ParseQueryString(string.Empty);
    data["username"] = "john";
    data["password"] = "secret";
    writer.Write(data.ToString());
}
using (var res = req.GetResponse())
{
    // You could check here if login was successful
}

req = (HttpWebRequest)WebRequest.Create("http://myurl/protectedresource");
req.CookieContainer = container;
using (var res = req.GetResponse())
using (var reader = new StreamReader(res.GetResponseStream()))
{
    string result = reader.ReadToEnd();
    // do something with the protected resource
}
于 2013-01-18T14:37:00.907 に答える