TwitterのOAuthってなんぞ?


山中雅俊 / 猫ロキP
Hakodate.* メンバー
事故自己紹介

• 猫ロキP / 山中雅俊
 – TwitterID: @deflis
 – 公立はこだて未来大4年生。内定しました。
• 一時期、C#でTwitterクライアント作ってました。
• 車載生とかラノベ紹介やってるニコ生主です
 – http://nico.ms/co108

     Twitterアイコン→
Twitterって?

• いわずとしれた、「つぶやきサービス」

     でもみなさん

      OAuth
        って知ってますか?
OAuth
出典: フリー百科事典『ウィキペディア(Wikipedia)』



OAuth (オーオース) は、ブレイン・クックとクリ
ス・メッシーナが始めたオープンプロトコルであ
り、デス クトップ、モバイル、Webアプリケーショ
ンなどにセキュアなAPI認可 (authorization) の
標準的手段を提供する。
端的に言えば?

• OAuthはAPIを認証するためのオープンプロト
  コル。

• TwitterでAPIを認証するのに必要だったから
  作ったプロトコル。
どんな仕掛け?

          ク
          ラ
A
          イ
P
          ア
I
          ン
提
          ト
供
          ア
者
          プ
          リ
どんな仕掛け?

    トークン取得(開発者)   ク
                  ラ
A
                  イ
P
                  ア
I
                  ン
提
                  ト
供
                  ア
者
                  プ
                  リ
どんな仕掛け?

     トークン取得(開発者)       ク
          認証           ラ
A   認証トークン取得リクエスト      イ
P                            ユーザー
       認証トークン
                       ア
I                            認証URL
           ユーザーが許可     ン
提                     PINコード
    アクセストークン取得リクエスト    ト
供                     リダイレクト
      アクセストークン         ア
者
                       プ
                       リ
どんな仕掛け?

        認証            ク
     アクセストークン
                      ラ
A
                      イ
P
                      ア
I
    APIアクセスのヘッダーに     ン
提   認証情報を付けてアクセス
                      ト
供
                      ア
者
                      プ
     ここのヘッダーがややこしい!
                      リ
ヘッダーの中身
• トークンと秘密トークン
 – 実はトークンは2つ有ります。
• アクセスしているURL(?~を除く)
• リクエストの内容
 – RFC3984準拠でURIエンコード
 – ?~とかPOSTの内容とか
• 時刻、ランダムな文字列
• 上記の内容をエンコードした署名(ハッシュ)
 – HMAC-SHA1 もしくは RSA-SHA1

以上をアルファベット順にソート
ヘッダーについて補足

• 実はこのヘッダー、トークンを取りに行くときも
  使います。
• HMAC-SHA1は.NETでハッシュ生成できます。
 – Compact Frameworkにはないので注意。
• RFC3984準拠のエンコードは.NET4から。
 – RFC3984=IPv6世代のエンコード。
 – .NET3.5まではRFC 1738 準拠しか選べない。
まとめ

• 自分で実装すると、ややこしいのでいろいろとラ
  イブラリ使った方がいいよ!
 – 実は俺も一つ作ってます。
 – http://github.com/deflis/NekoVampire.Library

• xAuthはOAuthの認証関係をある程度省略?
 – まだ時間がないので詳しくは調べてません。

• 5分だとここまでが限界?
おわり


ご静聴ありがとうございました。

TwitterのOAuthってなんぞ?