OAuth 2.0プロトコル
概要
ログイン製品は、ユーザー登録と認証のためのOAuth 2.0標準プロトコルに対応しています。OAuth 2.0標準の認可プロトコルは、クライアントアプリケーションの開発容易性を重視し、ユーザーの参加なしにアクセストークンを更新することが可能です。OAuth 2.0プロトコルの詳細な情報は、その公式サイトで確認できます。ユーザーJWTはアクセストークンとして使用されます。
OAuth2.0クライアントとエクソーラログインサーバー間の相互作用を以下に示します:
OAuth 2.0プロトコルをセットアップするには:
- ログイン製品を接続します。
- エクソーラ、PlayFabまたはFirebaseストレージをセットアップします。
- OAuth2.0クライアントを接続します。
OAuth 2.0クライアントを接続する
- アドミンページでプロジェクトを開き、「ログイン」セクションに移動します。
- ログインオプションのパネルにある「構成する」をクリックします。
- 「セキュリティ」ブロックに移動し、「OAuth 2.0」セクションを選択します。
- Add OAuth 2.0クライアントを追加するをクリックします。
- モーダルウィンドウで、次のことを指定します:
- クライアント名。
- アカウントの確認、認証の成功、パスワードリセットの確認後にユーザーがリダイレクトされるURI(複数可)。
- 認証タイプ:公開、機密、サーバー。
- サーバー認証の場合:
grant_type=client_credentials
; - 機密認証および公開認証の場合:
grant_type=authorization_code
またはgrant_type=refresh_token
。
- 機密クライアントは、アクセストークンを取得または更新するためにJWTを生成するメソッドを呼び出す際に、クライアントIDと秘密鍵を使用することを要求します。
- 公開クライアントでは、クライアントIDの使用のみが必要です。
- ユーザー名とパスワードによるJWT認証メソッドコールは、公開認証でのみ利用可能です。
- 接続をクリックします。
- アプリケーションでOAuth 2.0認証をセットアップするために必要なクライアントIDと秘密鍵が生成されます。
- ダイアログウィンドウで、コピーボタンを使ってクライアントIDと秘密鍵をコピーしてください。
OAuth 2.0クライアント設定を取得する
OAuth 2.0クライアント接続時にクライアントIDと秘密鍵をコピーしなかった場合、このデータにアクセスするために以下の操作が必要です:
- アドミンページでプロジェクトを開き、「ログイン」セクションに移動します。
- ログインオプションのパネルにある「構成する」をクリックします。
- 「セキュリティ」ブロックに移動し、「OAuth 2.0」セクションを選択します。
- 必要なOAuth2.0クライアントの行で:
- 「クライアントID」フィールドの内容をコピーします。
- 「クライアントキー」をクリックして、秘密鍵をコピーします。
クライアントIDと秘密鍵は、ログインAPIメソッドのclient_id
とclient_secret
パラメータに対応しています。OAuth 2.0クライアントを使用する場合は、これらの値を使用してください。
アプリケーション側での統合
以下の統合オプションが利用できます:
ログインAPIとログインウィジェットを使用する場合、scope
パラメータが使用されます。以下の値を取ります:
offline
はアクセストークンを更新します。登録または認証メソッドにscope=offline
を渡します。email
はソーシャルネットワークを通じた認証の際に、ユーザーのメールアドレスをリクエストにします。ログイン製品をログインAPIで統合した場合、登録または認証メソッドにscope=email
を渡します。ログインウィジェットで統合する場合、メールアドレスと電話番号の収集に関する説明を使用して、ユーザーのメールアドレスの収集方法を設定します。
ログインウィジェット経由の統合
ログインウィジェット経由の統合を構成した場合、client_id
、response_type
、state
またはredirect_uri
パラメータを初期化コードに追加します。redirect_uri
パラメータで、アドミンページでOAuth2.0クライアントに接続するときに設定された値を指定する必要があります。scope
パラメータを追加することもできます。
リクエストの例:
- html
<script>
const xl = new XsollaLogin.Widget({
projectId: 'LOGIN_PROJECT_ID',
preferredLocale: 'en_US',
clientId: 'CLIENT_ID',
responseType: 'code',
state: 'CUSTOM_STATE',
redirectUri: 'REDIRECT_URI',
scope: 'SCOPE'
});
</script>
ログインAPI経由の統合
OAuth 2.0プロトコルに対応したAPIメソッドを使用して、ユーザーの登録と認証を行います。すでにJWT規格のメソッドを統合している場合は、OAuth 2.0メソッドコールに置き換えてください。
認証メソッドを呼び出す際に、受信したcode
パラメータをアクセストークンと交換します。
エクソーラSDK経由の統合
エクソーラSDKは、OAuth 2.0プロトコルベースの認証に対応しています。OAuth 2.0クライアントの設定は、ゲームエンジンまたはプラットフォームを選択して指示に従ってください:アクセストークンを取得する
ユーザーアクセストークンを取得するには、以下のパラメータ値でJWTを生成するメソッドを使用します:
grant_type
の場合はauthorization_code
;scope
の場合は(アクセストークンの次回更新時に必要です)offline
;client_id
— OAuth 2.0クライアント設定値;client_secret
— OAuth 2.0クライアント設定値(公開OAuth 2.0クライアントでは不要です);redirect_uri
— アドミンページのOAuth 2.0クライアント接続時に設定された値;- アプリケーションのユーザー認証または登録に成功した後に受け取た
code
。
APIメソッドのレスポンスとして、以下のトークンが返されます:
access_token
— アクセストークン。デフォルトの有効期限は1時間です。refresh_token
— リフレッシュトークンです。有効期限は限定されません。
リクエストの例:
http
- http
- curl
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=authorization_code&redirect_uri=https://my-website.com/callback
curl --request POST \
--url https://login.xsolla.com/api/oauth2/token \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=authorization_code \
--data client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik \
--data client_id=11 \
--data redirect_uri=https://my-website.com/callback \
--data code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik
アクセストークンをリフレッシュする
アクセストークンの有効期限が切れたら、JWTを生成するメソッドを使用して、grant_type
パラメータをrefresh_token
に等しくし、最後に受け取ったリフレッシュトークンの値(refresh_token
)を使用してリフレッシュします。
APIメソッドのレスポンスとして、access_token
アクセストークンとrefresh_token
リフレッシュトークンの新しいペアが返され、その後再度リフレッシュすることができます。
リクエストの例:
http
- http
- curl
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=refresh_token&refresh_token=111dfgdfgdf&redirect_uri=https://my-website.com/callback
curl --request POST \
--url https://login.xsolla.com/api/oauth2/token \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=refresh_token \
--data client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik \
--data client_id=11 \
--data redirect_uri=https://my-website.com/callback \
--data refresh_token=111dfgdfgdf
access_token
とrefresh_token
のトークンペアは無効となります。同時接続ユーザーセッション数の制限を変更するには、カスタマーサクセスマネージャーまでお問い合わせるか、csm@xsolla.comに電子メールを送信してください。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。