SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Windows.Web.Http.HttpClient
とWebAuthenticationBrokerで
Webサービスアクセス
@第9回まどべんよっかいち
2014/7/26
青木 宣明(@kumar0001)
今日の目標
Windowsストアアプリにおいて
Windows.Web.Http.HttpClientと
WebAuthenticationBrokerを使って
OAuth認可&RESTアクセスをする
Windows Phone 8.1でWABを使うと
きの注意点を知ってもらう
WPFで使えるSystem.Net.Http名前
空間のHttpClientを知ってもらう
Webサービスへのアクセス
OAuthでリソースへのアクセス権限を得る
• リクエストトークンの取得
• ユーザ承認画面にアクセスしてリソースアクセス許可を得る
• アクセストークンを取得
リソースアクセスのURIにHTTPアクセスする
• 認証情報の設定
• 非同期でのHTTPアクセス
処理の流れ
HttpClient
HttpClient
WebAuthenticationBroker
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
つまり
• サーバ上のリソースへのアクセス権を認可
のためのプロトコル
OAuthによるWebサービスアクセス
Twitter (OAuth 1.0a)
①
②
③
④
OAuthによるWebサービスアクセス
IIJmio (OAuth 2.0)
(Implicit Grant)
ここらでデモでも
OAuthの処理
HTTP GET/POSTでOAuthのエンドポイントにアクセスする
• ヘッダなどへの認証情報の設定
• 非同期アクセス
承認画面のURIにアクセスして、その結果のリダイレクトURIを受け取る
• ブラウザでのアクセス
• リダイレクトURIの解析
共通した処理
HttpClient
WebAuthenticationBroker
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
HttpClientのコンストラクタ
フィルタを指定
フィルタを指定しない場合はデフォルトの
HttpBaseProtocolFilterが使用される
IHttpFilerを実装するクラス
IHttpFilter
2個のメソッドを実装
・SendRequestAsync: HTTPリクエストを送信して結果を返す
・Dispose: リソースの廃棄
ヘッダに認証情報を
追加している
HTTPアクセス
GETの場合
GETアクセスはGetStringAsync以外に3パターン
・GetAsync / GetBufferAsync / GetInputStreamAsync
(結果の返し方が異なる)
結果を文字列で取得する版
戻り値は IAsyncOperationWithProgress<String, HttpProgress>
HTTPアクセス
POSTの場合
IHttpContentを実装したクラスをPostAsyncに指定する
戻り値は
IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress>
HTTPアクセス
PUTの場合
IHttpContentを実装したクラスをPutAsyncに指定する
戻り値は
IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress>
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
ユーザ承認画面への遷移
WPFなど従来は…
1. WebBrowserコントロールをログイン画面にホストする
2. 認証画面のURLを指定して表示する
3. ユーザの承認操作の後、Navigatedイベントを監視して
コールバックURLにリダイレクトされたのを検知する
4. リダイレクトされたURLのパラメータからトークンなど
を取得する
WebBrowserOAuth処理
②認証画面の表示
③Navigatedイベント④URLから
トークン取得
①WebBrowserコント
ロールをホスト
WebAuthenticationBroker
1. 認証画面のURLを指定して非同期で実行。画面はブローカーが
表示する
2. 認証終了後に成功・失敗の結果を見る
• 成功ならリダイレクト先URLのパラメータからトークンなどを取得
2つのHttpClient
WPFなどWindows 8.1より前では
System.Net.Http.HttpClientを使う
• それ以外のクラスも同様の機能を持つクラ
スがある
HttpClient ⇒ HttpClient
IHttpFiler ⇒ HttpMessageHandler
HttpContent ⇒ HttpContent
…
• 詳細はデモコードで
WP8.1での注意点
WebAuthenticationBrokerはアプリ
を中断させる
• 認証が終わるとアプリが起動されて
Activatedイベントが発生する
イベント引数から認証終了後の起動か判別して
残りの処理を行う
• 詳細はデモコードで
まとめ
HttpClientで非同期・認証情報の処理が手軽に
• IHttpFilterで認証情報の設定をHTTP通信処理から分離できる
• async/awaitで非同期処理を扱える
• GET/POST/PUT/DELETEに対応したアクセスメソッド
WebAuthenticationBrokerで認証画面の処理を手軽に
• 認証画面URLとコールバックURLを指定すれば、ユーザ承認後の処
理が自動化される
• ユーザ承認に成功したらリダイレクトURLのパラメータを処理する

Weitere ähnliche Inhalte

Ähnlich wie Windows.Web.Http.HttpClientとWebAuthenticationBroker

Financial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteFinancial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteTatsuo Kudo
 
kitproライトニングトーク
kitproライトニングトークkitproライトニングトーク
kitproライトニングトークTaichi Kimura
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9Ryo Ito
 
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリOAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリKenji Otsuka
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...Tatsuo Kudo
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションTatsuo Kudo
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #apiTatsuo Kudo
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティHiroshi Hayakawa
 
OAuth Echo の Rails Gem
OAuth Echo の Rails GemOAuth Echo の Rails Gem
OAuth Echo の Rails GemToru Kawamura
 
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄Yukio Saito
 
なんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いなんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いRyo Ito
 

Ähnlich wie Windows.Web.Http.HttpClientとWebAuthenticationBroker (16)

Financial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteFinancial-grade API Hands-on with Authlete
Financial-grade API Hands-on with Authlete
 
kitproライトニングトーク
kitproライトニングトークkitproライトニングトーク
kitproライトニングトーク
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9
 
OAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリOAuth 2.0 と ライブラリ
OAuth 2.0 と ライブラリ
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
 
20120609
2012060920120609
20120609
 
PFI Seminar 2012/02/24
PFI Seminar 2012/02/24PFI Seminar 2012/02/24
PFI Seminar 2012/02/24
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
 
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
 
O Auth
O AuthO Auth
O Auth
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティ
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
OAuth Echo の Rails Gem
OAuth Echo の Rails GemOAuth Echo の Rails Gem
OAuth Echo の Rails Gem
 
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
 
なんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いなんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来い
 

Mehr von Nobuaki Aoki

お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタNobuaki Aoki
 
このはちゃんとConoHaと私
このはちゃんとConoHaと私このはちゃんとConoHaと私
このはちゃんとConoHaと私Nobuaki Aoki
 
Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Nobuaki Aoki
 
Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Nobuaki Aoki
 
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Nobuaki Aoki
 
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Nobuaki Aoki
 
Blog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerBlog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerNobuaki Aoki
 
第1回三重合同懇親会
第1回三重合同懇親会第1回三重合同懇親会
第1回三重合同懇親会Nobuaki Aoki
 
IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編Nobuaki Aoki
 
Getting started with edison
Getting started with edisonGetting started with edison
Getting started with edisonNobuaki Aoki
 
第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知Nobuaki Aoki
 
第1回三重合同懇親会の告知
第1回三重合同懇親会の告知第1回三重合同懇親会の告知
第1回三重合同懇親会の告知Nobuaki Aoki
 
(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについてNobuaki Aoki
 
まどべんよっかいちのご紹介
まどべんよっかいちのご紹介まどべんよっかいちのご紹介
まどべんよっかいちのご紹介Nobuaki Aoki
 
Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Nobuaki Aoki
 
mbedとwindows 8.1
mbedとwindows 8.1mbedとwindows 8.1
mbedとwindows 8.1Nobuaki Aoki
 
Windows phone 8プログラミング~gps&地図編~
Windows phone 8プログラミング~gps&地図編~Windows phone 8プログラミング~gps&地図編~
Windows phone 8プログラミング~gps&地図編~Nobuaki Aoki
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Nobuaki Aoki
 
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Nobuaki Aoki
 
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Nobuaki Aoki
 

Mehr von Nobuaki Aoki (20)

お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタ
 
このはちゃんとConoHaと私
このはちゃんとConoHaと私このはちゃんとConoHaと私
このはちゃんとConoHaと私
 
Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Apache Usergridについて(公開用)
Apache Usergridについて(公開用)
 
Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)
 
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
 
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
 
Blog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerBlog=pelican+bit bucket+docker
Blog=pelican+bit bucket+docker
 
第1回三重合同懇親会
第1回三重合同懇親会第1回三重合同懇親会
第1回三重合同懇親会
 
IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編
 
Getting started with edison
Getting started with edisonGetting started with edison
Getting started with edison
 
第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知
 
第1回三重合同懇親会の告知
第1回三重合同懇親会の告知第1回三重合同懇親会の告知
第1回三重合同懇親会の告知
 
(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて
 
まどべんよっかいちのご紹介
まどべんよっかいちのご紹介まどべんよっかいちのご紹介
まどべんよっかいちのご紹介
 
Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築
 
mbedとwindows 8.1
mbedとwindows 8.1mbedとwindows 8.1
mbedとwindows 8.1
 
Windows phone 8プログラミング~gps&地図編~
Windows phone 8プログラミング~gps&地図編~Windows phone 8プログラミング~gps&地図編~
Windows phone 8プログラミング~gps&地図編~
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築
 
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
 
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
 

Windows.Web.Http.HttpClientとWebAuthenticationBroker