인증/허가¶
Strix Cloud에서는 토큰 인증/허가가 가능합니다.
Strix Cloud의 게임 서버는 사용자 비밀번호 등 중요한 정보를 몰라도 토큰을 이용하여 다른 인증 서버로 인증할 수 있습니다.
본인 토큰, OAuth2, OpenID Connect 등을 이용할 수 있습니다.
인증/허가 순서¶
인증/허가의 원리는 아래 그림과 같습니다. 클라이언트 애플리케이션과 Strix Cloud 게임 서버, 외부 웹 API 서버를 서로 연결하여 허가를 처리합니다.
웹 API 서버는 미리 준비해야 합니다.
아래 웹 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 <access token>"라는 형태로 액세스 토큰이 포함되어 있으므로, 액세스 토큰 부분을 빼고 해당 액세스 토큰과 연동된 사용자 정보를 응답에 넣어 리턴합니다.
요청
curl -X POST -H 'Authorization: Bearer jERkHgIcAfe9xpSpqHUVxBuvLQTV77cO' https://<Base URL>/api/user
응답
{
"id": 123, // 사용자 ID
"name": "Alice" // 사용자 이름
}
사용자 정보는 id와 이름을 리턴해야 합니다.
Strix Cloud 옵션 설정¶
먼저 Strix Cloud 옵션 화면에서 인증/허가 옵션을 활성화합니다.
이어서 웹 API를 준비합니다. 토큰을 리턴하는 API와 사용자 정보를 리턴하는 API를 준비합니다.
사용자 리소스 획득 API URL은 웹 서버의 URL을 지정합니다.
{
"id": 123,
"name": "Alice"
}
StrixNetwork.authorizationAccessToken
에 토큰을 설정하는 StrixNetwork.ConnectMasterServer
를 호출합니다.
JoinRoom
을 이용할 때는 RoomJoinArgs.authUrl
에 인증 URL을 설정합니다.
StrixNetwork.SearchRoom 콜백 이벤트에는 authUrl
이 포함되어 있으며 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);