Chapter 3 OAuth Authentication
This page is not available in English.
Please select another language.
![]() | 本チュートリアルで作成するサンプルコードは Native Tutorial Sample Download からダウンロードできます。 |
- クライアントアプリケーション
- Game Server
- Mobageプラットフォーム
の3者間 で行う認証処理を 3-legged 認証 と言い、Mobage では上記のような認証処理を行う為に RESTful API を使用した認証プロセスを提供しています。3-legged 認証処理のフローは下記のようになります。
- クライアントから Game Server へ temporary credential の要求をする (1.)
- Game Server から Platform へ temporary credential の要求をしクライアントに返す (2. ~ 4.)
- クライアントで authorizeToken メソッドを呼び出し verifier code を取得する (5. ~ 8.)
- クライアントから Game Server へ token credential の要求をする (9.)
- Game Server から Platform へ token credential の要求をする (10. ~ 12.)
- 以後の通信は取得した Token Credential を使用して Game Server と Mobage プラットフォーム間で行う事が可能となる (13. ~ 16.)
以上が RESTful API を使用した認証プロセスの概要となります。より詳細な情報は RESTful API をご参照ください。
3-legged 認証処理の実装
![]() | Game Server では OAuth 処理を行う為に Google の提供している OAuth.php のライブラリを使用しています。 |
必要な物
3-legged 認証処理を実装するにあたり必要な物をまとめたので参考にしてください。
必要な物 |
用途 |
---|---|
Game Server から Platform に通信する際に使用する |
|
Game Server から Platform に通信する際に使用する |
|
SDK の initialize に使用する |
|
SDK の initialize に使用する(Android 用) |
|
SDK の initialize に使用する(Android 用) |
|
SDK の initialize に使用する(iOS 用) |
|
SDK の initialize に使用する(iOS 用) |
![]() | リンクをクリックすると各情報の取得方法を解説したページに遷移します。 |
1. クライアントから Game Server へ temporary credential の要求をする
クライアントアプリケーションから Game Server に temporary credential 取得リクエストを送信します。
Android/iOS で HTTP のリクエストを送信するにはそれぞれ下記のように実装します。
2 ~ 4. Game Server から Platform へ temporary credential の要求をしクライアントに返す
クライアントアプリケーションから temporary credential 取得リクエストを受信したら Game Server は Mobage Platform の temporary credential 用の End point へリクエストを行います。
また、Platform からのレスポンスが返ってきたら Game Server は temporary credential をクライアントアプリケーションに返却する必要があります。
Platform へのリクエストとレスポンスは下記のようになります。
HTTPS Request
Platform へリクエストを送る際には
と OAuth.php を利用して Authorization header を作成する必要があります。 Authorization header のサンプルは下記をご参考ください。
HTTPS Response
Platform から
- oauth_token
- oauth_token_secret
- oauth_callback_confirmed
が返ってきますがクライアントアプリケーションでは "oauth_token(temporary_credential)" のみの使用となるので "oauth_token" のみをクライアントアプリケーションに返します。また、"oauth_token", "oauth_token_secret" は token credential の取得リクエスト時に署名として使用するので "tmp_oauth_token", "tmp_oauth_token_secret" としてセッション等に保存してください。
![]() | "oauth_token_secret" はセキュリティ担保の為、ネットワークに流さないようにしてください。 |
5 ~ 8. クライアントで authorizeToken メソッドを呼び出し verifier code を取得する
temporary credential の取得が完了したら、次はクライアントアプリケーションで temporary credential を引数に Mobage SDK の authorizeToken メソッドを呼び出して verifier code を取得します。この際、クライアントアプリケーションで Mobage SDK の initialize に使用した
Android アプリケーションの場合
iOS アプリケーションの場合
の組み合わせが正しい物でないとエラーとなるのでご注意ください。
Android / iOS での authorizeToken メソッドの呼び出し方は下記のようになります。
![]() | temporaryCredential は "temporary_credential:XXXXXXXXXXXXXXXX" のような形式となります。URL エンコードが掛かっていて "temporary_credential%3aXXXXXXXXXXXXXXXX" 等のような形式になっている場合 Mobage SDK の authorizeToken メソッドがエラーとなります。 |
Android の場合
iOS の場合
9. クライアントから Game Server へ token credential の要求をする
verifier code の取得が完了したら、クライアントアプリケーションから Game Server に token credential 取得リクエストを送信します。
Android/iOS で HTTP のリクエストを送信するにはそれぞれ下記のように実装します。
10 ~ 12. Game Server から Platform へ token credential の要求をする
クライアントアプリケーションから token credential 取得リクエストを受信したら Game Server は Mobage Platform の token credential 用の End point へリクエストを行います。
また、Platform からのレスポンスが返ってきたら Game Server は token credential を取得の可否をクライアントアプリケーションに返却する必要があります。
Platform へのリクエストとレスポンスは下記のようになります。
HTTPS Request
Platform へリクエストを送る際には
- REST_CONSUMER_KEY
- REST_CONSUMER_SECRET
- tmp_oauth_token
- tmp_oauth_token_secret
- verifier code
と OAuth.php を利用して Authorization header を作成する必要があります。 Authorization header のサンプルは下記をご参考ください。
HTTPS Response
Platform から
- oauth_token
- oauth_token_secret
- oauth2_token
が返ってきますがクライアントアプリケーションでは使用しないので返却する必要はございません。"oauth_token", "oauth_token_secret" は今後 Game Server から Platform へのリクエスト時に署名として使用するのでセッション等に保存してください。
![]() | "oauth_token_secret", "oauth2_token" はセキュリティ担保の為、ネットワークに流さないようにしてください。 |
![]() | Token CreToken Credential (oauth_token, oauth2_token) の管理は、Mobage の UserID 単位で行わず、必ずセッション ID 等のセッション単位で行って下さい。
Mobage オープンプラットフォームでは、デバイスの区別は Token Credential に紐付いて行われます。そのため、どちらかのデバイスを使って発行した Token Credential はデバイス間で共有することができません。セッション ID ごとに Token Credential が管理されているのであればこのような心配も無くなりますので、適切な実装をお願いします。 |
その他実装上の注意点
上記意外に実装を行う際の注意点は下記のようになります。
Platform から 401 エラーが返却された場合
取得した Token Credential の有効期限は発行後24時間です。Token Credential の有効期限が切れた場合は Platform からの応答が status code 401 となります。Platform から status code 401 が返ってきた場合は もう一度始めから 3-legged 認証処理を行って Token Credenatial を取得する ように実装をお願い致します。
参考情報
更新履歴
- 2013/12/04
- 初版作成