콘텐츠로 이동

로그인 토큰 유효성 검증

앱 서버가 아이템 지급이나 플레이 데이터 저장처럼 위변조를 허용할 수 없는 처리를 하기 전에는, 요청을 보낸 사용자가 정말 그 계정의 주인인지 확인해야 합니다. 앱 클라이언트가 보낸 Player ID만으로는 위조 여부를 알 수 없으므로, 앱 서버는 로그인 과정에서 발급된 액세스 토큰을 Hive Axyl 인증 서버에 확인해 사용자를 식별합니다.

액세스 토큰 검증은 앱 서버와 Hive Axyl 인증 서버 사이의 Server-to-Server 통신으로 이루어집니다. 앱 클라이언트는 자신의 세션에서 액세스 토큰을 꺼내 앱 서버로 전달하는 역할만 하며, Hive Axyl SDK는 검증 메서드를 제공하지 않습니다.

Note

액세스 토큰이 만료되어 새로 발급받는 과정은 Hive Axyl SDK가 처리하므로 앱 서버가 만료를 직접 관리하지 않아도 됩니다. 자세한 내용은 자동 로그인을 참조하세요.

구현 순서

액세스 토큰 검증은 앱 클라이언트, 앱 서버, Hive Axyl 인증 서버가 순서대로 처리합니다.

  1. 앱 클라이언트가 현재 세션에서 액세스 토큰과 Player ID를 읽습니다. 두 값은 로그인으로 세션을 등록한 뒤부터 사용할 수 있습니다.
  2. 앱 클라이언트가 앱 서버에 로그인이나 세션 수립을 요청할 때 액세스 토큰을 함께 전달합니다. 앱 서버가 어떤 형식으로 받을지는 앱 서버의 인증 설계를 따릅니다.
  3. 앱 서버가 전달받은 액세스 토큰으로 액세스 토큰 유효성 확인을 호출합니다. 응답의 data.active가 true이면 유효한 토큰이며, data.playerId에 토큰 주인의 Player ID가 담겨 옵니다.
  4. 앱 서버가 확인 결과에 따라 처리합니다. 유효하면 data.playerId를 기준으로 앱 서버의 자체 세션을 만들고, 유효하지 않으면 비정상 접근으로 판단해 요청을 거부합니다.

앱 클라이언트가 보낸 Player ID를 그대로 신뢰하지 말고, 3단계에서 Hive Axyl 서버가 확인해 준 Player ID를 기준으로 처리하세요.

Hive Axyl SDK가 제공하는 값

Hive Axyl SDK는 현재 세션의 인증 정보를 읽는 프로퍼티를 제공합니다. 두 값 모두 ISessionManager에서 가져옵니다.

  • ISessionManager.AccessToken: 앱 서버로 전달할 현재 세션의 액세스 토큰이며, 로그인하지 않은 상태에서는 null입니다.
  • ISessionManager.PlayerId: 현재 세션의 Player ID이며, 로그인하지 않은 상태에서는 0입니다.
using Hive.Axyl.Core;

ISessionManager session = HiveCore.Resolve<ISessionManager>();

if (session.IsLoggedIn)
{
    string accessToken = session.AccessToken;
    long playerId = session.PlayerId;
    // 앱 서버에 로그인을 요청하면서 accessToken을 함께 전달합니다.
    await RequestAppServerLoginAsync(accessToken, playerId);
}

액세스 토큰은 민감 정보입니다. 로그에 남기지 말고, 앱 서버로 전달할 때는 HTTPS처럼 암호화된 통신을 사용하세요.

연관 문서