SlideShare ist ein Scribd-Unternehmen logo
1 von 37
OAuth1.0 for Twitter
@nemupm
OAuth1.0の概要
OAuth1.0の背景
沢山のクラウドサービスが普及
これらのサービスには有用なリソースが
眠っている.
別のサービスからも(ユーザの同意のもとに)
自由にリソースにアクセスしたい!!
今までだと…
別のサービスがリソースにアクセスするには,
ユーザからID・パスワードを貰う必要があった.
問題点が2つ
ID・パスワードを不正利用される可能性
リソースへの全権限を渡してしまう.
OAuth1.0の役割
リソースへの権限を
ID・パスワードを秘匿したまま
スコープ付きで
渡せるようになった.
安全で便利な世の中に!
OAuth1.0のフロー
リソースオーナー
3つの登場人物
リソースオーナー
- サーバ上にリソースを所有しているユーザ
クライアント
- リソースにアクセスしたいサーバ
サーバ
- リソースを直接管理しているサーバ
クライアント サーバ
OAuth1.0のフロー
リソースオーナー クライアント サーバ
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
最終目標はクライアントが
アクセストークンを取得して
APIを利用できる状態
OAuth1.0の最終目標
リソースオーナー クライアント サーバ
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
アクセストークン取得までの道のり
リソースオーナー クライアント サーバ
大きく3ステップに分けられる
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
① リクエストトークンの取得
リソースオーナー クライアント サーバ
最初にこの
(リソースオーナー,クライアント)の組み合わせ
に固有の識別子を発行
以降この識別子を用いることで
サーバは彼らを認識することができる
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
② リソースオーナーの認可を得る
リソースオーナー クライアント サーバ
クライアントへの権限の委譲を
リソースオーナーが認可するプロセス
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
② リソースオーナーの認可を得る 詳細(1/3)
リソースオーナー クライアント サーバ
まず先ほど取得したリクエストトークンと共に
リソースオーナーをサーバの認証画面へリダイレクト
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
② リソースオーナーの認可を得る 詳細(2/3)
リソースオーナー クライアント サーバ
リソースオーナーは認可するかどうかを選択
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
② リソースオーナーの認可を得る 詳細(3/3)
リソースオーナー クライアント サーバ
認可された場合,サーバはリソースオーナーを
検証コードと共にクライアントにリダイレクトさせ,
クライアントに間接的に検証コードを渡す
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
③ アクセストークンの取得
リソースオーナー クライアント サーバ
リクエストトークン・検証コードと引き換えに
アクセストークンを取得する
OAuth1.0のフロー
リソースオーナー クライアント サーバ
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
以上の3ステップにより
クライアントはアクセストークンを取得
OAuth1.0のフロー
リソースオーナー クライアント サーバ
access
token
APIの利用
access
token
アクセストークン取得
request token
リクエストトークン取得
request token
request token
request token verifier
verifier
認可
リソースオーナー認可
以降,実装方法の詳細について述べる
実装方法について
先ほどのフローを今度は
クライアント視点で
の順に説明します.
テンポラリクレデンシャルの取得
クライアントはリソースオーナーの指示を受け,
認証済みのPOSTリクエストを行う.
この時,以下のパラメータをリクエストに加える.
oauth_callback
- リソースオーナー認可( )後にサーバが
リソースオーナーをリダイレクトさせるURI
レスポンスが返ったら,
以下のテンポラリクレデンシャルを取り出す.
- oauth_token:識別子
- oauth_token_secret:共有鍵
リソースオーナーの認可
リソースオーナーを
サーバの認可画面にリダイレクトさせ待機する.
この時,リダイレクト先のURIに
以下のクエリを追加する.
oauth_token
- で得られたテンポラリクレデンシャルの識別子
送信したものと同一のoauth_tokenが
クエリに付与されたリクエストが届いたら,
クエリからoauth_verifierを取り出す.
トークンクレデンシャルの取得
クライアントは
認証済みのPOSTリクエストを行う.
この時,以下のパラメータをリクエストに加える.
oauth_verifier
- で得られた検証コード
レスポンスが返ったら,
以下のトークンクレデンシャルを取り出す.
- oauth_token:識別子
- oauth_token_secret:共有鍵
認証済みリクエストって
なんぞや
OAuthにおいて
サーバがクライアントの正当性を検証する
ために必要なルール
サーバがリクエストについて確認すべきこと
リクエストを送ったのがどのクライアントか
パラメータが改竄されていないか
(以下はAPI利用時のみ)
どのリソースオーナーに結び付けられているか
クライアントは本当に
リソースオーナーの代理として信用できるか
OAuthで定義されている要件
先ほどの項目を満たすために
リクエストに付与する必須のパラメータ
それらのパラメータの正当性を証明する方法
がリクエスト生成時の要件として定義されている.
- これらを満たしたリクエストを
認証済みリクエストと呼ぶ.
以下ではこれら2つの要件を順に説明する.
リクエストに付与する必須パラメータ(1/3)
oauth_consumer_key
- クライアントクレデンシャルの識別子
- クライアントを認識するのに必要
oauth_token
- リソースオーナーを認識するためのトークン
- API利用時以外は省略する.
クライアントクレデンシャルの取得(oauth_consumer_key)
OAuthでは
サーバがクライアントを識別する必要がある.
実は先ほどの図では省略していたが,
常にリクエストには
クライアントクレデンシャルが必要
クライアントクレデンシャルは一般的に
クライアントが事前にサーバに登録することで
サーバから配布される.
Twitterにおけるクライアントクレデンシャルの取得
Application ManagementでCreate New App
Access levelで権限のスコープを設定
Sign in with Twitterをオンにすると
特定条件下で認証画面をスキップできる.
Callback URLで認証後のリダイレクト先を指
定
以下の4つの値は控えておく.
- Consumer Key/Secret(クライアントクレデンシャル)
- Request token URL
- Authorize URL
- Access token URL
のエンドポイント
リクエストに付与する必須パラメータ(2/3)
oauth_timestamp
- 1970/01/01 00:00:00 GMT を起点にした経過秒数
oauth_nonce
- ユニークな文字列(タイムスタンプのミリ秒など)
- タイムスタンプ・ノンス(・トークン)の
組み合わせが既存のリクエストと同一である場合
リクエストは拒否される.
oauth_signature_method
- 署名メソッドであり,
OAuthでは3つ提供されているが,
TwitterではHMAC-SHA1を値として設定する.
パラメータをリクエストへ追加
OAuthでは追加する箇所を3つ用意しているが,
TwitterではAuthorizationヘッダフィールドへ
追加する.
具体的には,
パラメータ(key・value)を全て
パーセントエンコーディングする.
- RFC3986に従う.
パラメータを使って以下の形式の
文字列を生成し,ヘッダに追加する.
OAuth key1=“value1”, key2=“value2”…
リクエストに付与する必須パラメータ(3/3)
oauth_signature
- リクエストの正当性を証明するための署名
以降oauth_signatureの生成方法について
説明していく.
oauth_signatureの生成
以下に示すkey・textを使って
HMAC-SHA1によるハッシュ値を生成し,
それをbase64でエンコードすることで生成
key:
- クレデンシャルの正当性が示される.
- トークン無しの場合でも&は付ける.
text:シグニチャーベースストリングに設定
- パラメータの正当性が示される.
エンコード済み
クライアント共有鍵
エンコード済み
トークン共有鍵&
シグニチャーベースストリングの生成
以下の3つの文字列を順に&で結合して生成
エンコード済みHTTPリクエストメソッド
- TwitterだとGETかPOST
エンコード済みベースストリングURI
- リクエスト対象リソースを示すURI
- 以下の条件で構築する
- スキーマ・ホストは小文字
- ホスト・ポート番号はHostヘッダと同一
- http・httpsに対応するポート番号は省略
リクエストパラメータを繋げて
エンコードした文字列
リクエストパラメータ文字列の生成方法(1/2)
以下のパラメータ群を集める.
リクエストURIのクエリー要素を分解したもの
Authorizationヘッダフィールドの
realm・oauth_signature以外のパラメータ
リクエストエンティティボディのクエリー要素
を分解したもの
- ただし,ボディがシングルパートかつ
application/x-www-form-urlencodedの
エンコード要件を満たしている場合のみ
リクエストパラメータ文字列の生成方法(2/2)
以下の手順を実行し単一文字列を生成
各パラメータの名前と値をエンコード
昇順にソート
各パラメータの名前と値を=で連結
名前と値のペアを&で連結
これでsignature完成!
OAuth1.0まとめ・感想
リソースへのアクセス権限移譲を
セキュアに行うための仕組み
signature生成が面倒
- 間違っててもどこが間違ってるか発見しづらい…
callbackらへんガバガバ

Weitere ähnliche Inhalte

Was ist angesagt?

Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
flaws.cloudに挑戦しよう!
flaws.cloudに挑戦しよう!flaws.cloudに挑戦しよう!
flaws.cloudに挑戦しよう!zaki4649
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクションzaki4649
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニアakira6592
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014Nov Matake
 
Apple Payの仕組み
Apple Payの仕組みApple Payの仕組み
Apple Payの仕組み維 呉
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Web Services Japan
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -Naoki Nagazumi
 

Was ist angesagt? (20)

Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
flaws.cloudに挑戦しよう!
flaws.cloudに挑戦しよう!flaws.cloudに挑戦しよう!
flaws.cloudに挑戦しよう!
 
IDガバナンス&管理の基礎
IDガバナンス&管理の基礎IDガバナンス&管理の基礎
IDガバナンス&管理の基礎
 
とある診断員とSQLインジェクション
とある診断員とSQLインジェクションとある診断員とSQLインジェクション
とある診断員とSQLインジェクション
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014SAML / OpenID Connect / OAuth / SCIM 技術解説  - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
 
Apple Payの仕組み
Apple Payの仕組みApple Payの仕組み
Apple Payの仕組み
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
 

Andere mochten auch

OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011Taizo Matsuoka
 
JTF2016 The strategy and Sun Tzu
JTF2016 The strategy and Sun TzuJTF2016 The strategy and Sun Tzu
JTF2016 The strategy and Sun Tzuirix_jp
 
ツイートの取得と解析の間
ツイートの取得と解析の間ツイートの取得と解析の間
ツイートの取得と解析の間nemupm
 
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。健一 辰濱
 
Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話Yasuyuki Fujikawa
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2Jxck Jxck
 
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul"fireap" - fast task runner on consul
"fireap" - fast task runner on consulIKEDA Kiyoshi
 
grifork - fast propagative task runner -
grifork - fast propagative task runner -grifork - fast propagative task runner -
grifork - fast propagative task runner -IKEDA Kiyoshi
 
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIntroduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIKEDA Kiyoshi
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介dcubeio
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法Yoshifumi Kawai
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Yoshifumi Kawai
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...Yoshifumi Kawai
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityYoshifumi Kawai
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#Yoshifumi Kawai
 
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumiTokoroten Nakayama
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1Takuto Wada
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCYoshifumi Kawai
 

Andere mochten auch (20)

OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011
 
JTF2016 The strategy and Sun Tzu
JTF2016 The strategy and Sun TzuJTF2016 The strategy and Sun Tzu
JTF2016 The strategy and Sun Tzu
 
ツイートの取得と解析の間
ツイートの取得と解析の間ツイートの取得と解析の間
ツイートの取得と解析の間
 
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
 
Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話Serverlessなものを使ってサービスを作っている話
Serverlessなものを使ってサービスを作っている話
 
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
 
"fireap" - fast task runner on consul
"fireap" - fast task runner on consul"fireap" - fast task runner on consul
"fireap" - fast task runner on consul
 
grifork - fast propagative task runner -
grifork - fast propagative task runner -grifork - fast propagative task runner -
grifork - fast propagative task runner -
 
Introduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alertingIntroduction to poloxy - proxy for alerting
Introduction to poloxy - proxy for alerting
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
Client-Side Deep Learning
Client-Side Deep LearningClient-Side Deep Learning
Client-Side Deep Learning
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶ データ分析グループの チームマネジメント変遷 (デブサミ2016) #devsumi
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 

今更OAuth1.0についてRFC読んで理解してみた