リクエストの署名

RESTful API のリクエストを署名するためには、下記の 3 つの方法があります。API によって署名方法は異なりますが、どの署名方法を適用するかは各 API のリファレンスページをご参照下さい。

  • 2-legged(Trusted モデル)
    この方法では、リクエストはアプリの Consumer Key と Consumer Secret だけを利用して署名します。Access Token がまだ取得されていない場合やユーザに依存しない操作(Game-to-User のリモート通知など)、ユーザではなくゲームとして API を呼び出す場合に利用されます。
  • 3-legged(Proxy モデル)
    フルな OAuth 3-legged 認証です。リクエストは Consumer Key、Consumer Secret および Access Token、Access Token Secret を利用して署名します。Access Token の取得やユーザとして API を呼び出す場合に利用されます。主に Social API で利用できます。
  • OAuth2
    署名は必要ありませんが HTTPS 通信が必須になります。リクエストの Authorization ヘッダーに、bearer {oauth2_token} という文字列を含めるだけで済みます。{oauth2_token} は、Access Token の取得時に発行される OAuth2 Token の値に置き換えて下さい。Bank API のみに利用可能です。
     
    API によっては、2-legged と 3-legged 方式の両方を受け付ける場合があります。署名の方式によっては処理が異なる場合があります。詳細については各 API のリファレンスページをご参照下さい。

次に、各署名方式の詳細をみていきます。

2-legged(Trusted モデル)

まず、Base String という署名の対象を作成します。次に、HMAC-SHA1 というハッシュアルゴリズムを用いて、アプリの Consumer Secret をキーにして Base String のハッシュを作り、それをリクエストの署名にします。最後に、リクエストの認証に必要な Authorization ヘッダーを作成し、リクエストの HTTP ヘッダーに追加します。

2-legged 方式と 3-legged 方式は基本的には同じ処理を行いますが、3-legged 方式では Access Token を OAuth パラメータのリストに加え、ハッシュ時のキーは Consumer Secret と Access Token Secret の両方を利用します。
ステップ 1)Base String の作成
  1. OAuth Parameter String というものを下記のように作成します。
    1. 下記パラメータを名前順にソートします。
    2. パラメータの名前とそれらの値を URLEncode (RFC 3986準拠) します。
    3. パラメータ名と値を "=" でジョインします。
    4. 各パラメータ名と値のペアをさらに "&" でジョインします。

      パラメータ

      説明

      oauth_callback

      リダイレクト URI

      "oob"に指定して下さい。

      oauth_consumer_key

      アプリの Consumer Key

      アプリ固有の Consumer Key、Mobage Developers から取得可能。

      oauth_nonce

      "Number used only once"、一度しか使わない数値

      ゲームサーバーで自由に生成して下さい。ただし、リクエストごとにユニークでなけれなりません。

      oauth_signature_method

      ハッシュ方式

      "HMAC-SHA1" を指定して下さい。

      oauth_timestamp

      UNIX タイムスタンプ

      リクエストのタイムスタンプ。ゲームサーバーで生成して下さい。

      oauth_verifier

      Mobage SDK から取得した Verifier 文字列

      /request_token の場合のみ必要。

      oauth_version

      OAuth バージョン

      "1.0" に指定して下さい。

      その他のパラメータ

      上記以外のクエリパラメータ

      上記以外のクエリパラメータ。例: param1=value1&param2=value2 の場合、"param1=value1"、"param2=value2" に分解し、上記各項とまとめてソートして下さい。

  2. 下記パラメータを URLEncode (RFC 3986 準拠) します。

    パラメータ

    説明

    リクエストメソッド

    HTTP リクエストメソッド:GET, POST, PUT, DELETE。

    API URL

    クエリ文字列を除外した URL。

    OAuth Parameter String

    上記手順で生成された OAuth Parameter String です。

  3. 上記 3 つのパラメータを "&" でジョインします。ここで出来上がった文字列は Base String といいます。
ステップ 2)oauth_signature の作成
  1. アプリの Consumer Secret の末尾に "&" をつけ、Secret String とします。
  2. HMAC-SHA1 ハッシュアルゴリズムに、Base String を Secret String でハッシュします。
  3. HMAC-SHA1 の出力はバイナリデータのため、Base64 エンコードして最終の署名を作成します。
ステップ 3)Authorization ヘッダーの作成
  1. 下記パラメータの名前とその値を URLEncode (RFC 3986 準拠)します。
  2. 値をダブル・クォーテーション・マークで囲み、パラメータ名と "=" でジョインします。
  3. パラメータ名とその値のペアを "," で区きり、ジョインします。
  4. オプショナルに realm パラメータを追加します。
  5. "OAuth "(末尾のスペース文字を含む)を上記で生成された文字列の先頭に追加します。

    パラメータ名

    oauth_callback

    "oob" に指定して下さい。

    oauth_consumer_key

    アプリ固有の Consumer Key、Mobage Developers から取得可能。

    oauth_nonce

    ゲームサーバーで自由に生成して下さい。ただし、リクエストごとにユニークでなけれなりません。

    oauth_signature

    上記ステップ 2 の出力文字列。

    oauth_signature_method

    "HMAC-SHA1" を指定して下さい。

    oauth_timestamp

    リクエストのタイムスタンプ。ゲームサーバーで生成して下さい。

    oauth_verifier

    Mobage SDK から取得した Verifier 文字列。/request_token の場合のみ必要。

    oauth_version

    "1.0" に指定して下さい。

Authorization ヘッダーの実例

Base String の各パラメータは下記の値を持ちます。

パラメータ

Request Method

POST

API URL

https://ssl.sb.sp.mbga-platform.jp/social/api/oauth/v2.01/request_temporary_credential

oauth_callback

oob

oauth_consumer_key

c8bb6e04c60b9f6c0063

oauth_nonce

fa894d8b9be49cd5191ee126b02e4171

oauth_timestamp

1380117217

oauth_signature_method

HMAC-SHA1

oauth_version

1.0

上記パラメータで生成された Base String はこちらです。

読みやすさのために改行を入れましたが、実際のところ一つのつながった文字列になります。

Signature String はこちらです。

最後に、Authorization ヘッダーはこちらになります。

各 API のリファレンスページにも、Base String の例を掲載していますのでそちらでもご参照下さい。

 

3-legged(Proxy モデル)

まず、Base String という署名の対象を作成します。次に、HMAC-SHA1 というハッシュアルゴリズムを用いて、アプリの Consumer Secret と Mobage プラットフォームから発行された Access Token Secret から厚生された文字列をキーにして Base String のハッシュを作り、それをリクエストの署名にします。最後に、リクエストの認証に必要な Authorization ヘッダーを作成し、リクエストの HTTP ヘッダーに追加します。

2-legged 方式と 3-legged 方式は基本的には同じ処理を行いますが、3-legged 方式では Access Token を OAuth パラメータのリストに加え、ハッシュ時のキーは Consumer Secret と Access Token Secret の両方を利用します。

 

ステップ 1)Base String の作成
  1. OAuth Parameter String というものを下記のように作成します。
    1. 下記パラメータを名前順にソートします。
    2. パラメータの名前とそれらの値を URLEncode (RFC 3986準拠) します。
    3. パラメータ名と値を "=" でジョインします。
    4. 各パラメータ名と値のペアをさらに "&" でジョインします。

      パラメータ

      説明

      oauth_consumer_key

      アプリの Consumer Key

      アプリ固有の Consumer Key、Mobage Developers から取得可能。

      oauth_nonce

      "Number used only once"、一度しか使わない数値

      ゲームサーバーで自由に生成して下さい。ただし、リクエストごとにユニークでなけれなりません。

      oauth_signature_method

      ハッシュ方式

      "HMAC-SHA1" を指定して下さい。

      oauth_timestamp

      UNIX タイムスタンプ

      リクエストのタイムスタンプ。ゲームサーバーで生成して下さい。

      oauth_token

      OAuth Access Token

      Mobage プラットフォームから発行された Access Token。

      oauth_version

      OAuth バージョン

      "1.0" に指定して下さい。

      その他のパラメータ

      上記以外のクエリパラメータ

      上記以外のクエリパラメータ。例: param1=value1&param2=value2 の場合、"param1=value1"、"param2=value2" に分解し、上記各項とまとめてソートして下さい。

  2. 下記パラメータを URLEncode (RFC 3986 準拠) します。

    パラメータ

    説明

    リクエストメソッド

    HTTP リクエストメソッド:GET, POST, PUT, DELETE。

    API URL

    クエリ文字列を除外した URL。

    OAuth Parameter String

    上記手順で生成された OAuth Parameter String です。

  3. 上記 3 つのパラメータを "&" でジョインします。ここで出来上がった文字列は Base String といいます。
ステップ 2)oauth_signature の作成
  1. アプリの Consumer Secret と Mobage プラットフォームから発行された Access Token Secret を "&" でジョインし、Secret String とします。
  2. HMAC-SHA1 ハッシュアルゴリズムに、Base String を Secret String でハッシュします。
  3. HMAC-SHA1 の出力はバイナリデータのため、Base64 エンコードして最終の署名を作成します。
ステップ 3)Authorization ヘッダーの作成
  1. 下記パラメータの名前とその値を URLEncode (RFC 3986 準拠)します。
  2. 値をダブル・クォーテーション・マークで囲み、パラメータ名と "=" でジョインします。
  3. パラメータ名とその値のペアを "," で区きり、ジョインします。
  4. オプショナルに realm パラメータを追加します。
  5. "OAuth "(末尾のスペース文字を含む)を上記で生成された文字列の先頭に追加します。

    パラメータ名

    oauth_consumer_key

    アプリ固有の Consumer Key、Mobage Developers から取得可能。

    oauth_nonce

    ゲームサーバーで自由に生成して下さい。ただし、リクエストごとにユニークでなけれなりません。

    oauth_signature

    上記ステップ 2 の出力文字列。

    oauth_signature_method

    "HMAC-SHA1" を指定して下さい。

    oauth_timestamp

    リクエストのタイムスタンプ。ゲームサーバーで生成して下さい。

    oauth_token

    OAuth Access Token

    Mobage プラットフォームから発行された Access Token。

    oauth_version

    "1.0" に指定して下さい。

Authorization ヘッダーの実例

Base String の各パラメータは下記の値を持ちます。

パラメータ名

Request Method

GET

API URL

http://sb.sp.mbga-platform.jp/social/api/restful/v2/social/api/restful/v2/people/@me/@self

oauth_consumer_key

c8bb6e04c60b9f6c0063

oauth_nonce

d224def28b2da93532f68f909e7c4680

oauth_signature_method

HMAC-SHA1

oauth_timestamp

1380204695

oauth_token

sp_client_id:c2585ae2691471227feadcbc469dfbf8

oauth_version

1.0

fields

nickname

上記パラメータで生成された Base String はこちらです。

読みやすさのために改行を入れましたが、実際のところ一つのつながった文字列になります。

Signature String はこちらです。

最後に、Authorization ヘッダーはこちらになります。

各 API のリファレンスページにも、Base String の例を掲載していますのでそちらでもご参照下さい。

 

OAuth2

Mobage プラットフォームから発行された oauth2_token 文字列を Authorization ヘッダーに追加するだけで完了します。なお、必ず HTTPS 通信を利用する必要があります。

 
下記は Authorization ヘッダーの例です。

 

詳細については、Bank API の各ページを参照して下さい。
PREVIOUS

OAuth認証

NEXT

コードサンプル