Class: Gs2::Auth::Client

Inherits:
Core::AbstractClient
  • Object
show all
Defined in:
lib/gs2/auth/Client.rb

Overview

GS2-Auth クライアント

Author:

  • Game Server Services, Inc.

Constant Summary

@@ENDPOINT =
'auth'
@@VARIATION =
'a'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(region, gs2_client_id, gs2_client_secret) ⇒ Client

コンストラクタ

Parameters:

  • region (String)

    リージョン名

  • gs2_client_id (String)

    GSIクライアントID

  • gs2_client_secret (String)

    GSIクライアントシークレット



18
19
20
# File 'lib/gs2/auth/Client.rb', line 18

def initialize(region, gs2_client_id, gs2_client_secret)
  super(region, gs2_client_id, gs2_client_secret)
end

Class Method Details

.ENDPOINT(v = nil) ⇒ Object

デバッグ用。通常利用する必要はありません。



23
24
25
26
27
28
29
# File 'lib/gs2/auth/Client.rb', line 23

def self.ENDPOINT(v = nil)
  if v
    @@ENDPOINT = v
  else
    return @@ENDPOINT
  end
end

.VARIATION(v = nil) ⇒ Object

デバッグ用。通常利用する必要はありません。



32
33
34
35
36
37
38
# File 'lib/gs2/auth/Client.rb', line 32

def self.VARIATION(v = nil)
  if v
    @@VARIATION = v
  else
    return @@VARIATION
  end
end

Instance Method Details

#login(request) ⇒ Object

ログイン。

GS2のサービスを利用するにあたってユーザの認証に必要となるアクセストークンを発行します。
アクセストークンの発行には以下の情報が必要となります。

  • ユーザID

  • サービスID

ユーザID には ログインするユーザのIDを指定してください。
GS2 はアカウント管理機能を持ちませんので、ユーザID は別途アカウント管理システムで発行したIDを指定する必要があります。
アカウントIDの文字種などには制限はありません。

サービスID には任意の文字列を指定できます。
ここで指定したサービスIDにもとづいて、その後アクセストークンで利用できるGSIを制限するのに利用します。

サービスの制限は GSI(AWSのIAMのようなもの) のセキュリティポリシーで設定することができます。
例えば、GSIに設定されたセキュリティポリシーが service-0001 によるアクセスを許可する。という設定の場合、
service-0002 というサービスIDで発行されたアクセストークンとGSIの組み合わせでリクエストを出してもリジェクトされるようになります。

これによって、下記のようなアクセスコントロールを同一アカウント内で実現できます。

  • GSI(A) 許可するアクション(GS2Inbox:*) 許可するサービス(service-0001)

  • GSI(B) 許可するアクション(GS2Stamina:*) 許可するサービス(service-0002)

この場合、service-0001 向けに発行されたアクセストークンと GSI(B) の組み合わせではサービスを利用することはできません。
そのため、service-0001 向けのアクセストークンでは GS2-Stamina を利用することはできないことになります。

Parameters:

  • request (Array)
    • serviceId => サービスID

    • userId => ユーザID



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/gs2/auth/Client.rb', line 70

def (request)
  if not request; raise ArgumentError.new(); end
  body = {};
  if request.has_key?('serviceId'); body['serviceId'] = request['serviceId']; end
  if request.has_key?('userId'); body['userId'] = request['userId']; end
  query = {};
  return post(
    'Gs2Auth',
    'Login',
    @@ENDPOINT,
    @@VARIATION,
    '/login',
    body,
    query);
end