Identity Provider Management

개발자 포털의 플레이어 ID 관리 개요입니다.

10 분 소요

에픽 온라인 서비스(EOS)ID 제공자 (‘플랫폼’이라고도 함)로 알려진 여러 온라인 스토어 및 게임 서비스의 플레이어 계정을 연동할 수 있습니다. 이를 통해 사용자는 데이터를 자신이 사용하는 여러 플랫폼 간에 공유하고 매치메이킹과 같은 크로스 플랫폼 기능을 이용할 수 있습니다.

EOS에서 지원하는 ID 제공자:

  • Amazon
  • Apple
  • Discord
  • 에픽게임즈*
  • GOG Galaxy
  • Google
  • itch.io
  • Nintendo
  • Oculus
  • PlayStation&#153 Network
  • Steam
  • Xbox Live
  • OpenID

활성화된 ID 제공자(위 플로 참조)에서 사용자가 제품 인스턴스를 시작할 때마다 제품은 연결 인터페이스를 사용하여 로컬 사용자를 인증합니다.

ID 제공자는 인증 토큰을 제공합니다. EOS_EExternalCredentialTypeEOS_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 OKEOS_Success액세스 토큰이 유효하고 신뢰할 수 있습니다.
401 UnauthorizedEOS_Connect_ExternalTokenValidationFailed액세스 토큰이 유효하지 않거나, 만료되었거나, 신뢰할 수 없습니다.
403 ForbiddenEOS_Connect_ExternalTokenValidationFailedEOS 인증 백엔드의 요청을 허용하지 않습니다. 경고 : 이런 오류가 발생해서는 안 됩니다.
404 Not FoundEOS_Connect_ExternalTokenValidationFailed계정 시스템에서 해당 사용자를 찾을 수 없습니다. 경고 : 이런 오류가 발생해서는 안 됩니다.
500 Internal Server ErrorEOS_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 ProductUserID는 내부적으로 두 개의 서로 다른 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

여러 SteamAppID 간에 사용자를 인증하려면 Steamworks 웹 대시보드 환경설정 내의 모든 SteamAppID에 동일한 Steam 암호화 키(Steam Encryption Key)를 사용합니다. 그러면 여러 Steam 게임 빌드에서 단일 EOS 크리덴셜 엔트리를 사용할 수 있습니다.