認証/認可¶
Strix Cloudではトークンによる認証/認可をサポートしています。
Strix Cloudのゲームサーバーはトークンを使って他の認証サーバーに問い合わせることで、ユーザーのパスワードなどの重要な情報を知ることなく認証を行うことができます。
認証には独自のトークンやOAuth2、OpenID Connectなどを利用することができます。
認証/認可処理の流れ¶
認証/認可を行う流れは次の図のようになります。クライアントアプリケーション、Strix Cloudゲームサーバー、外部Web APIサーバーの3つが連携することで認可処理が行われます。
このうち、Web APIサーバーの部分を用意して頂く必要があります。
上図のように次のWeb APIを用意してください。
ログインAPI
トークン取得API
ユーザー情報取得API
ログインAPI¶
ログインAPIはHTTPS通信での認証を行うためのものです。認証方法はどのような方法でも構いませんので、ID・パスワード認証やUUIDでの認証など好きな方法でログイン処理を作成します。
トークン取得API¶
トークン取得APIはStrix認証用のアクセストークンを発行するためのAPIです。ログイン済みかどうかをチェックし、レスポンスとしてトークンを返すようにします。
要求
curl -X POST https://<Base URL>/api/access_token
応答
{
"access_token": "jERkHgIcAfe9xpSpqHUVxBuvLQTV77cO"
}
ユーザー情報取得API¶
ユーザー情報取得APIはトークンに紐づくユーザーの情報を返すAPIです。このAPIはStrix Cloudのゲームサーバー側からユーザー情報を取得するためにアクセスされます。
これはPOSTリクエストのAPIである必要があります。また、Authorizationヘッダーに「Bearer <アクセストークン>」という形式でアクセストークンが含まれていますのでアクセストークンの部分を取り出し、そのアクセストークンに紐づくユーザー情報をレスポンスで返してください。
要求
curl -X POST -H 'Authorization: Bearer jERkHgIcAfe9xpSpqHUVxBuvLQTV77cO' https://<Base URL>/api/user
応答
{
"id": 123, // ユーザーID
"name": "Alice" // ユーザー名
}
ユーザー情報はidとnameを返す必要があります。
Strix Cloudオプション設定¶
まずStrix Cloudのオプション画面から認証/認可のオプションを有効にします。
まずWeb APIを用意します。トークンを返すAPIと、ユーザー情報を返すAPIを用意します。
ユーザーリソース取得API URLのところには、WebサーバーのURLを指定してください。
{
"id": 123,
"name": "Alice"
}
StrixNetwork.authorizationAccessToken
にトークンを設定するStrixNetwork.ConnectMasterServer
を呼ぶ
JoinRoom
を使う場合はRoomJoinArgs.authUrl
に認証URLをセットする
authUrl
はStrixNetwork.SearchRoom
のコールバックイベントに含まれており、roomInfo.nodeProperties["authUrl"]
から取得することができます
string authUrl = "";
if (roomInfo.nodeProperties != null && roomInfo.nodeProperties.TryGetValue("authUrl", out object authUrlValue)) {
authUrl = authUrlValue.ToString();
}
RoomJoinArgs joinArgs = new RoomJoinArgs {
host = roomInfo.host,
port = roomInfo.port,
protocol = roomInfo.protocol,
roomId = roomInfo.roomId,
authUrl = authUrl,
memberProperties = memberProperties
};
StrixNetwork.instance.JoinRoom(joinArgs, handler, failureHandler, config);