ピースペース

クライアントアプリからForm認証なWebAPIにアクセスする

leave a comment »

WPFなアプリでForm認証なWebAPIにアクセスするには?
を探してWebをさまよったが、なかなか要領を得ない。
HTTPの基本的なことと、ASP.NETの認証フレームワークの関係について整理できてないのが原因なのだが…
要するにログインの仕方がわからない;;

は、だるやなぎさん、かずきさんが説明してくれていた。
http://daruyanagi.jp/entry/2013/05/01/031148
http://okazuki.hatenablog.com/entry/2013/08/28/202835

なんとかしてサーバーが発行する認証チケットをClientの中に格納しなさい!ってことだね
でもって、チケットを格納するオブジェクトとしては
HttpClientHandler の代わりに WebRequestHandler を使う方法もあるらしい
を使ってみた

var client = new HttpClient(new WebRequestHandler());
client.BaseAddress = new Uri("http://localhost:52109/");
var response = client.PostAsync("api/auth",
new FormUrlEncodedContent(new Dictionary<string, string>
     {
      { "UserName", "yama"},
          { "Password", "kawa"}
     })).Result;

HttpResponseMessage response = await client.GetAsync("api/values");
if (response.IsSuccessStatusCode)
{
    this.Values = await response.Content.ReadAsAsync<string[]>();
}

これで無事、[Authorize]属性なAPIにアクセスできた!
このコードのイケてないのは、WebAPI側にあるLogOnModelを使えてないことだ。
かずきさんの説明には、それはPCLにしておくのが良いでしょう!と書いてある。
なにそれ??PCL

http://blogs.msdn.com/b/aonishi/archive/2012/06/28/10324945.aspx

HttpClientも含めて上のコードはまるごとライブラリ側に移動しなさいってことだな
他のアプリと共有できるようにしておくと良いよ!と
そうしとけば、Xamarinを使えばAndroidやiOSなモバイルアプリでも使える!かもしれないよと
SPAでは使えるのかな。流石にそれは無理だな;;;;
しかしこれを避けてやる気を維持できないよーな気がする...
うみゅう また、はまりそーな予感

Written by nasu38yen

2015年4月17日 @ 11:53 AM

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。