에픽 온라인 서비스(EOS)에서는 ID 제공자(Identity Providers) 라고도, ‘플랫폼’이라고도 하는 여러 온라인 스토어 및 게임 서비스의 플레이어 계정을 연동할 수 있습니다. 이를 통해 사용자는 자신이 사용하는 여러 플랫폼 간에 데이터를 공유하고 매치메이킹과 같은 크로스 플랫폼 기능을 이용할 수 있습니다.
EOS에서 지원하는 ID 제공자:
- Amazon
- Apple
- Discord
- 에픽게임즈*
- GOG Galaxy
- itch.io
- Nintendo
- Oculus
- PlayStation Network
- Steam
- Xbox Live
- OpenID
활성화된 ID 제공자(위 플로 참조)에서 사용자가 제품 인스턴스를 시작할 때마다 제품은 연결 인터페이스를 사용하여 로컬 사용자를 인증합니다.
ID 제공자는 인증 토큰을 제공합니다. EOS_EExternalCredentialType 및 EOS_Connect_Login은 로컬 사용자를 검증할 인증 토큰 타입과 토큰의 신뢰성 및 유효성을 검사할 ID 제공자를 지정합니다. 여러 환경이 있는 제품에는 다수의 인증 토큰이 필요할 수도 있습니다.
EOS는 ID 제공자 구성을 사용하여 제출된 토큰과 사용자 ID를 검증하여 사용자를 기존 제품 데이터와 연결합니다.
사용자가 새로운 플랫폼에서 처음으로 제품을 플레이하면 EOS는 플레이어에게 해당 플랫폼의 제품 데이터가 없음을 확인합니다. 그러면 제품 클라이언트는 사용자에게 현재 플랫폼 계정으로 계속 진행할지, 현재 플랫폼에 해당 게임을 위한 계정을 생성할지, 이전에 제품을 플레이할 때 사용했던 다른 계정으로 로그인할지 묻습니다.
사용자가 다른 ID 제공자의 기존 계정으로 로그인하기로 선택하면, 제품에서 사용자에게 두 계정을 연동할지 물을 수 있습니다. 이 초기 이벤트를 마치면 EOS는 사용자가 이 제품을 플레이할 때 어떤 계정을 사용할지 기억하므로 다시 묻지 않습니다.
ID 제공자 구성하기
제품의 ID 제공자를 구성하려면 액세스할 제품을 선택하고 제품 세팅(Product Settings) 을 클릭한 다음 ID 제공자(Identity Providers) 탭을 선택합니다. 그런 다음 구성(Configure) 버튼으로 각 제공자를 구성합니다.
ID 제공자를 구성한 뒤에는 제품을 선택하고, 제품 세팅(Product Settings) 을 클릭하고, 환경(Environments) 탭을 선택하여 제품의 어느 샌드박스에든 활성화할 수 있습니다. ID 제공자(Identity Providers) 버튼을 클릭하여 샌드박스에 대한 ID 제공자를 구성합니다.
OpenID 제공자
회사에 자체 사용자 계정 시스템이 있다면, OpenID 제공자 구성을 추가하여 사용자를 EOS SDK로 인증하기 위한 인증 지원을 추가하고 다른 ID 제공자와 동일한 방식으로 게임 서비스를 사용할 수 있습니다.
OpenID 제공자는 UserInfo API 엔드포인트 또는 JSON Web Key Set(JWKS)를 사용하여 토큰을 검증합니다.
UserInfo API 엔드포인트
UserInfo API 엔드포인트를 구성하려면 UserInfo API 엔드포인트가 반환한 사용자의 계정 ID 및 표시명에 대한 JSON 응답 필드 이름 또는 JWT 액세스 토큰의 클레임 이름을 지정해야 합니다.
EOS 인증 백엔드는 EOS_Connect_Login에 전달된 액세스 토큰을 사용하여 UserInfo API 엔드포인트를 호출합니다.
API 엔드포인트는 HTTPS 프로토콜을 사용하고, GET 또는 POST HTTP 메서드를 사용합니다. 또한 발생할 수 있는 오류에 대해 다음과 같은 응답을 구현해야 합니다.
HTTP 응답 코드 | 반환된 EOS_EResult | 설명 |
---|---|---|
200 OK | EOS_Success | 액세스 토큰이 유효하고 신뢰할 수 있습니다. |
401 Unauthorized | EOS_Connect_ExternalTokenValidationFailed | 액세스 토큰이 유효하지 않거나, 만료되었거나, 신뢰할 수 없습니다. |
403 Forbidden | EOS_Connect_ExternalTokenValidationFailed | EOS 인증 백엔드의 요청을 허용하지 않습니다. 경고: 이런 오류가 발생해서는 안 됩니다. |
404 Not Found | EOS_Connect_ExternalTokenValidationFailed | 계정 시스템에서 해당 사용자를 찾을 수 없습니다. 경고: 이런 오류가 발생해서는 안 됩니다. |
500 Internal Server Error | EOS_Connect_ExternalServiceUnvailable | 문제가 있어 인증 서비스에서 요청을 완료할 수 없습니다. |
JSON Web Key Set(JWKS)
OpenID 제공자는 JWKS를 사용하여 제출된 ID 토큰을 검증합니다. 이를 위해 공개적으로 액세스 가능한 JWKS URL을 제공해야 합니다.
사용자의 계정 ID는 ‘sub’ 클레임에서 추출됩니다.
ID 토큰에 예상되는 대상 그룹 값(‘aud’ 클레임)을 사용자 표시명의 클레임 이름과 함께 구성해야 합니다.
ID 제공자별 정보
Nintendo
게임 애플리케이션이 다수의 Nintendo App ID에 의존한다면, 각 ID의 크리덴셜 엔트리를 ID별 환경과 함께 추가하고 모두 EOS 샌드박스에서 사용되도록 틱합니다.
Oculus
기본적으로 Rift와 Quest 디바이스는 Oculus 생태계에서 별개의 플랫폼으로 취급됩니다. 즉, 애플리케이션은 사용자가 사용하는 디바이스에 따라 다른 Oculus 앱 범위 사용자 ID를 받게 됩니다. 하지만 EOS 연결 백엔드는 여러 Oculus 디바이스에서 동일한 사용자를 인식할 수 있습니다. 계정 연동 키링이 Oculus 조직 범위 사용자 ID를 사용하여 로그인한 사용자를 인식하기 때문입니다.
한 사용자가 Rift와 Quest를 모두 사용하여 애플리케이션에 로그인하면, 사용자의 EOS 제품 사용자 ID는 내부적으로 두 개의 서로 다른 Oculus 앱 범위 사용자 ID에 매핑됩니다. 그러면 여러 Oculus 디바이스에서 사용자의 EOS 데이터가 예상대로 유지됩니다.
하지만 EOS_ProductUserID의 연동된 Oculus 계정을 쿼리하면 알려진 Oculus 앱 범위 사용자 ID 중 하나가 미확정 상태로 반환됩니다. 따라서 EOS SDK에서 반환한 Oculus 앱 범위 사용자 ID와 Oculus SDK에서 확인하는 Oculus 앱 범위 사용자 ID가 일치하지 않을 수 있습니다. 예를 들어 EOS SDK는 Rift 기반 앱 범위 사용자 ID를 반환하지만, 사용자는 현재 Oculus Quest 디바이스를 사용 중일 수도 있습니다.
사용자가 여러 디바이스에서 별도의 Oculus 앱 범위 사용자 ID를 갖지 않게 하려면 Oculus 앱 그룹화(Oculus App Groupings) 기능을 사용하여 크로스 디바이스 인증 지원을 활성화합니다. 그러면 Oculus 생태계가 여러 Oculus 디바이스에서 동일한 Oculus 앱 범위 사용자 ID를 재사용하여 사용자를 한 사람으로 취급합니다.
자세한 정보는 다음 페이지를 참고하세요. 앱 그룹화를 사용한 Oculus 크로스 디바이스 개발
Steam
에픽 계정 서비스에서는 'EOS_Auth_Login' SDK API의 로그인 크리덴셜 유형으로 Steam 세션 티켓을 사용해야 합니다. 게임 클라이언트에서는 EOS SDK에 사용되는 Steam 세션 티켓에 ISteamUser::GetAuthTicketForWebApi Steamworks SDK API를 특별히 사용해야 합니다. 이를 위해서는 Steamworks SDK 버전 1.57 이상을 사용해야 합니다.
게임 서비스는 Steam 사용자 인증을 위한 다음 방법을 지원합니다.
- Steamworks SDK를 통해 Steam 세션 티켓 및 Steam 암호화 앱 티켓
- 웹 기반 로그인 흐름을 통한 Steam OAuth
팁: 게임에서 Steam 암호화 앱 티켓을 사용하는 경우 Steamworks 웹 대시보드 구성에서 모든 SteamAppID에 동일한 암호화 키를 사용합니다. 이렇게 하면 서로 다른 Steam 게임 빌드에서 단일 EOS 크리덴셜 항목을 사용할 수 있습니다.