Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Windows.Web.Http.HttpClientとWebAuthenticationBroker

1,722 views

Published on

第9回まどべんよっかいちでの発表資料です。最後のWP8やWPFに関するページは後日に追記予定です。

Published in: Software
  • Be the first to comment

Windows.Web.Http.HttpClientとWebAuthenticationBroker

  1. 1. Windows.Web.Http.HttpClient とWebAuthenticationBrokerで Webサービスアクセス @第9回まどべんよっかいち 2014/7/26 青木 宣明(@kumar0001)
  2. 2. 今日の目標 Windowsストアアプリにおいて Windows.Web.Http.HttpClientと WebAuthenticationBrokerを使って OAuth認可&RESTアクセスをする Windows Phone 8.1でWABを使うと きの注意点を知ってもらう WPFで使えるSystem.Net.Http名前 空間のHttpClientを知ってもらう
  3. 3. Webサービスへのアクセス OAuthでリソースへのアクセス権限を得る • リクエストトークンの取得 • ユーザ承認画面にアクセスしてリソースアクセス許可を得る • アクセストークンを取得 リソースアクセスのURIにHTTPアクセスする • 認証情報の設定 • 非同期でのHTTPアクセス 処理の流れ HttpClient HttpClient WebAuthenticationBroker
  4. 4. OAuthとは Oauthって何? • OAuth is an open standard for authorization. OAuth provides client applications a 'secure delegated access' to server resources on behalf of a resource owner. http://en.wikipedia.org/wiki/OAuth つまり • サーバ上のリソースへのアクセス権を認可 のためのプロトコル
  5. 5. OAuthによるWebサービスアクセス Twitter (OAuth 1.0a) ① ② ③ ④
  6. 6. OAuthによるWebサービスアクセス IIJmio (OAuth 2.0) (Implicit Grant)
  7. 7. ここらでデモでも
  8. 8. OAuthの処理 HTTP GET/POSTでOAuthのエンドポイントにアクセスする • ヘッダなどへの認証情報の設定 • 非同期アクセス 承認画面のURIにアクセスして、その結果のリダイレクトURIを受け取る • ブラウザでのアクセス • リダイレクトURIの解析 共通した処理 HttpClient WebAuthenticationBroker
  9. 9. Windows.Web.Http.HttpClient RESTでのWebサービスアクセスに便利 • GET/POST/PUT/DELETEに対応した非同期メ ソッド GetAsync/PostAsync/PutAsync/DeleteAsync • 連鎖可能なフィルタ(IHttpFilter) 認証情報の付加など、HTTP通信を補助的に加工する処 理を追加できる http://msdn.microsoft.com/en-us/library/windows/apps/bg182884.aspx
  10. 10. HttpClientのコンストラクタ フィルタを指定 フィルタを指定しない場合はデフォルトの HttpBaseProtocolFilterが使用される IHttpFilerを実装するクラス
  11. 11. IHttpFilter 2個のメソッドを実装 ・SendRequestAsync: HTTPリクエストを送信して結果を返す ・Dispose: リソースの廃棄 ヘッダに認証情報を 追加している
  12. 12. HTTPアクセス GETの場合 GETアクセスはGetStringAsync以外に3パターン ・GetAsync / GetBufferAsync / GetInputStreamAsync (結果の返し方が異なる) 結果を文字列で取得する版 戻り値は IAsyncOperationWithProgress<String, HttpProgress>
  13. 13. HTTPアクセス POSTの場合 IHttpContentを実装したクラスをPostAsyncに指定する 戻り値は IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress>
  14. 14. HTTPアクセス PUTの場合 IHttpContentを実装したクラスをPutAsyncに指定する 戻り値は IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress>
  15. 15. IHttpContent クラス 説明 HttpBufferContent バッファ(IBuffer)を使用するコンテンツ (バイナリデータなど) HttpFormUrlEncoded Content MIMEタイプ ”application/x-www-form-urlencoded” 名前/値のペアから構成されるコンテンツ HttpStreamContent ストリーム(IInputStream)を使用するコンテンツ HttpStringContent 文字列を使用するコンテンツ (JSON,XMLデータなど) HttpMultipartContent MIMEタイプ “multipart/*”のコンテンツ HttpMultipartFormDa taContent MIMEタイプ “multipart/form-data”のコンテンツ (formタグで送信されるフォームデータ) Request/Response Request
  16. 16. ユーザ承認画面への遷移 WPFなど従来は… 1. WebBrowserコントロールをログイン画面にホストする 2. 認証画面のURLを指定して表示する 3. ユーザの承認操作の後、Navigatedイベントを監視して コールバックURLにリダイレクトされたのを検知する 4. リダイレクトされたURLのパラメータからトークンなど を取得する WebBrowserOAuth処理 ②認証画面の表示 ③Navigatedイベント④URLから トークン取得 ①WebBrowserコント ロールをホスト
  17. 17. WebAuthenticationBroker 1. 認証画面のURLを指定して非同期で実行。画面はブローカーが 表示する 2. 認証終了後に成功・失敗の結果を見る • 成功ならリダイレクト先URLのパラメータからトークンなどを取得
  18. 18. 2つのHttpClient WPFなどWindows 8.1より前では System.Net.Http.HttpClientを使う • それ以外のクラスも同様の機能を持つクラ スがある HttpClient ⇒ HttpClient IHttpFiler ⇒ HttpMessageHandler HttpContent ⇒ HttpContent … • 詳細はデモコードで
  19. 19. WP8.1での注意点 WebAuthenticationBrokerはアプリ を中断させる • 認証が終わるとアプリが起動されて Activatedイベントが発生する イベント引数から認証終了後の起動か判別して 残りの処理を行う • 詳細はデモコードで
  20. 20. まとめ HttpClientで非同期・認証情報の処理が手軽に • IHttpFilterで認証情報の設定をHTTP通信処理から分離できる • async/awaitで非同期処理を扱える • GET/POST/PUT/DELETEに対応したアクセスメソッド WebAuthenticationBrokerで認証画面の処理を手軽に • 認証画面URLとコールバックURLを指定すれば、ユーザ承認後の処 理が自動化される • ユーザ承認に成功したらリダイレクトURLのパラメータを処理する

×