에픽 계정 서비스 시작하기

자사의 제품으로 에픽 계정 서비스(EAS)를 설정하는 방법

2022년 10월 이전에 에픽 계정 서비스가 통합된 콘솔용 게임을 출시할 계획이라면 eas-on-console-beta@epicgames.com으로 연락하여 출시 계획을 조율하세요.

에픽 계정 서비스(EAS) 는 에픽 온라인 서비스(EOS)** 의 독립형 서비스입니다. EAS는 ID 제공자에 구애받지 않는 EOS 서비스 세트와 더불어 독립된 계열의 에픽 계정 전용 서비스입니다. 에픽 온라인 서비스에 반드시 에픽 계정 서비스를 사용할 _필요는 없지만_ 언제든지 EAS를 EOS ID 제공자로 활성화하고 인증 인터페이스를 사용할 수 있습니다. ID 제공자에 구애받지 않는 서비스를 이용하는 방법에 대한 자세한 내용은 연결 인터페이스를 참조하세요.

에픽 계정 서비스 애플리케이션을 셋업하려면 먼저 다음 전제 조건을 충족해야 합니다.

  • 개발자 포털에 가입하고 계정의 다단계 인증을 활성화합니다.

  • 본인의 조직을 생성하거나 이미 생성된 조직에 가입합니다. 진행하려면 에픽 계정이나 관리자 권한이 필요합니다.

  • 에픽 계정 서비스를 사용할 제품을 생성하거나 선택합니다.

  • 최신 버전의 [EOS SDK]를 다운로드합니다(https://dev.epicgames.com/portal/sdk). 자세한 내용은 EOS 퀵스타트 가이드에서 확인할 수 있습니다.

1. 개발자 포털에서 에픽 계정 서비스에 액세스

제품 홈페이지나 탐색 패널의 개발자 포털(Developer Portal) 에서 에픽 계정 서비스를 찾을 수 있습니다.

EAS 대시보드로 이동하려면 에픽 계정 서비스의 서비스 부록(Service Addendum for Epic Account Services) 을 검토하고 수락해야 합니다. 개발자 포털(Developer Portal) 에 있는 조직(Organization) 섹션의 라이선스(Licenses) 탭에서 수락한 모든 동의 내역을 언제든 검토할 수 있습니다.

에픽게임즈의 사용자 데이터 수집 및 사용, 공유 방법을 이해하려면 에픽게임즈 개인정보 취급방침(Epic Games Privacy Policy) 을 확인해 주세요.

조직 타입을 회사(Company) 법인으로 구성했다면 라이선스 계약마다 한 번만 수락하면 됩니다. 그러나 개인(Individual) 법인으로 구성했다면 EAS 대시보드 액세스 권한이 있는 모든 구성원이 개별적으로 계약을 수락해야 합니다.

표준 EOS 서비스를 사용하면 사용자의 데이터를 대신 프로세스하는 서비스 공급자로 에픽게임즈에 라이선스를 부여하게 됩니다. 그러나 에픽게임즈는 에픽 계정 서비스를 통해 사용자 데이터와 인증 절차를 관리하고, 사용자의 동의하에 사용자를 대신해 이러한 데이터와 기능을 공개합니다. 개발사는 에픽 계정 서비스의 서비스 부록(Service Addendum for Epic Account Services) 에 정의된 대로, 허용된 용도로만 데이터를 사용하는 데 동의하게 됩니다.

2. EAS 애플리케이션 셋업하기

에픽 계정 서비스 대시보드에서 첫 번째 애플리케이션을 생성할 수 있습니다. 개발자 포털에 이후 애플리케이션 용도로 자리표시자가 표시되지만, 세부 구성 정보는 표시되지 않습니다.

클릭하면 이미지가 확대됩니다.

애플리케이션 구성은 3개의 주요 섹션으로 이루어집니다.

  1. 브랜드 세팅(Brand Settings): 이름, 로고, 개인정보 보호 정책 URL 및 지원 URL입니다.

  2. 권한(Permissions): 애플리케이션에서 사용자에게 요청하는 액세스 권한입니다.

  3. 연동된 클라이언트(Linked Clients): 인증 절차 중 SDK가 사용하는 클라이언트 크리덴셜과 애플리케이션의 연동입니다.

구성(Configure) 을 클릭하여 위 내용을 진행합니다.

애플리케이션 브랜드 세팅

애플리케이션 구성 첫 번째 섹션은 애플리케이션 브랜드 세팅(Application Brand Settings) 입니다.

클릭하면 이미지가 확대됩니다.

왼쪽에서 동의 다이얼로그의 프리뷰를 볼 수 있는데, 이 다이얼로그는 애플리케이션에 정보 공유하는 것을 허용해 줄 것을 요청을 받는 에픽 사용자에게 표시됩니다. 프리뷰는 모바일과 웹 버전에서 이용할 수 있습니다.

처음에는 빨간색 경고 배너가 동의 다이얼로그 프리뷰 상단에 표시됩니다. 이 경고는 애플리케이션 브랜드 세팅이 잠재 유해성이나 브랜드 스푸핑 시도와 관련한 검토를 받지 않았음을 나타냅니다. 또한, 검증되지 않은 애플리케이션의 동의 다이얼로그에는 또 다른 경고 다이얼로그가 앞서 표시됩니다. 이중 경고의 목적은 사용자가 검증되지 않은 애플리케이션 사용의 의미를 완전하게 이해하도록 하는 것입니다.

모든 애플리케이션은 검증되지 않은 상태로 생성되며, 이용 대상 제한이 적용됩니다. 같은 개발 조직의 구성원만 에픽게임즈 계정을 사용하여 이러한 검증되지 않은 애플리케이션에 대해 인증할 수 있습니다. 다른 모든 사용자에게는 이용 대상 제한 오류 메시지가 표시됩니다. 이러한 제한의 목적은 에픽 사용자를 보호하는 동시에 개발자가 브랜드 리뷰를 위해 애플리케이션을 준비하는 동안 통합 반복작업을 할 수 있게 하는 것입니다.

이러한 제한을 제거하려면, 오른쪽 항목의 세부 사항을 작성하고 애플리케이션 브랜드 리뷰를 위해 제출해야 합니다. 여기에는 다음과 같은 내용이 포함됩니다.

  • 애플리케이션 이름(Application Name): 사용자에게 표시되는 애플리케이션 이름입니다. 해당 이름이 디폴트 제품 이름으로 설정됩니다.

  • 개인정보 보호 정책 URL(Privacy Policy URL): 사용자가 해당 애플리케이션 개인정보 보호 정책을 확인할 수 있는 URL 링크입니다.

  • 애플리케이션 로고(Application Logo): 동의 다이얼로그에서 애플리케이션을 나타내는 128 x 128 불투명 PNG 또는 JPG 이미지입니다.

위 항목을 업데이트하면 프리뷰에 변경 사항이 즉시 반영됩니다.

클릭하면 이미지가 확대됩니다.

애플리케이션이 생성되고 브랜드 세팅이 저장되면 다음 탭으로 이동합니다.

애플리케이션 권한

권한(Permissions) 탭은 애플리케이션에서 사용자에게 요청할 액세스 수준을 정의하는 곳입니다.

클릭하면 이미지가 확대됩니다.

에픽 계정 서비스는 다음 세 가지 기본 권한을 지원합니다.

  • 기본 프로필(Basic Profile): 사용자 표시명, 언어 기본 설정 및 연결된 계정 표시명에 대한 읽기 액세스를 허용합니다.

  • 온라인 현재상태(Online Presence): 애플리케이션이 현재 사용자의 온라인 현재상태를 설정하고 사용자의 친구로부터 온라인 현재상태 업데이트를 수신할 수 있게 허용합니다.

  • 친구(Friends): 현재 사용자 계정의 친구 목록에 대한 읽기 액세스를 허용합니다.

에픽 계정 서비스에는 항상 기본 프로필이 필요하며, 기본 프로필이 없으면 어떠한 사용자 데이터에도 액세스할 수 없으므로 비활성화할 수 없습니다. 온라인 현재상태와 친구는 애플리케이션의 필요에 따라 활성화하거나 비활성화할 수 있습니다. 애플리케이션에서 활성화하려는 권한을 토글한 다음 저장(Save) 을 클릭하여 변경 사항을 저장합니다. 동의 다이얼로그 프리뷰에 추가하거나 제거한 권한이 반영되어 업데이트됩니다.

클릭하면 이미지가 확대됩니다.

애플리케이션 클라이언트

마지막으로, 클라이언트(Clients) 탭에서 애플리케이션과 관련된 클라이언트 목록을 환경설정할 수 있습니다. 클라이언트 는 에픽 계정 서비스 백엔드 내부에서 애플리케이션의 데이터에 액세스할 수 있는 모든 소프트웨어나 웹사이트를 뜻합니다. 애플리케이션과 관련된 모든 클라이언트는 제품 세팅(Product Settings)에 나열되며, 사용자가 동의하면 그 동의를 모든 클라이언트가 공유합니다.

클릭하면 이미지가 확대됩니다.

이미 애플리케이션의 클라이언트를 설정했다면, 클라이언트 선택(Select Clients) 드롭다운 메뉴에서 클라이언트를 선택할 수 있습니다. 또는 새 클라이언트 생성(Create New Client) 을 클릭하여 제품 세팅(Product Settings) 페이지를 열고 새 클라이언트를 구성할 수 있습니다. 새 클라이언트 추가에 대한 자세한 정보는 클라이언트 크리덴셜 페이지를 참조해주세요.

이 목록에 클라이언트를 추가했다면, 저장(Save) 버튼을 클릭하여 변경 사항을 저장합니다.

클릭하면 이미지가 확대됩니다.

이제 EAS 애플리케이션 구성(EAS Application Configuration)을 완료했습니다. 지금부터 EAS를 제품에 통합하고 이를 사용하여 사용자 데이터에 액세스할 수 있습니다. 제출한 애플리케이션의 브랜드 세팅 리뷰가 완료되면 이용 대상 제한이 해제되며 조직 외부의 사용자에게 애플리케이션이 표시됩니다.

클릭하면 이미지가 확대됩니다.

3. EOS SDK로 에픽게임즈 사용자 인증하기

EOS SDK에서는 특별한 설정 없이 에픽 계정을 사용할 수 있습니다. 그러나 타깃 플랫폼에 적합한 로그인 타입(인증 인터페이스 참조)을 사용해야 하며, 브랜드 리뷰 신청 과정에서 명시한 로그인 호출 시점에 사용자가 동의해야 하는 범위(프로필, 현재상태, 친구 목록)를 정해야 합니다.

예를 들어, PC의 계정 포탈을 통해 로그인하려면 로그인 호출은 다음과 같이 나타날 것입니다.

EOS_Auth_Credentials Credentials = { 0 };
Credentials.ApiVersion = EOS_AUTH_CREDENTIALS_API_LATEST;
Credentials.Type = EOS_LCT_AccountPortal;

EOS_Auth_LoginOptions LoginOptions = { 0 };
LoginOptions.ApiVersion = EOS_AUTH_LOGIN_API_LATEST;
LoginOptions.ScopeFlags = EOS_AS_BasicProfile | EOS_AS_FriendsList | EOS_AS_Presence;
LoginOptions.Credentials = &Credentials;

EOS_Auth_Login(AuthHandle, &LoginOptions, NULL, OnLoginCallback);

이렇게 하면 디폴트 시스템 웹 브라우저가 열리면서 사용자에게 로그인하여 액세스 애플리케이션 요청을 확인하라는 메시지가 표시됩니다.

4. 웹사이트에서 에픽게임즈 사용자 인증하기

에픽게임즈는 웹사이트와 웹 애플리케이션에서 사용자를 인증할 수 있도록 OpenID Connect Core 1.0용 코드 인증 절차를 지원합니다. 그러나 먼저 브랜드 리뷰 신청클라이언트 크리덴셜을 구성해야 합니다.

사용자 인증

인증 절차를 개시하려면 애플리케이션이 에픽게임즈 계정에 로그인할 수 있는 인증 페이지로 사용자를 리디렉션해야 합니다.

사용자를 다음 인증 URL로 리디렉션합니다.

https://www.epicgames.com/id/authorize?client_id={client_id}&response_type=code&scope=basic_profile&redirect_uri=https://www.example.com&state=rfGWJux2WL86Zxr6nKApCAnDo8KexEUE

추가 권한을 요청하려면 공백으로 구분된 필수 권한 목록을 사용하여 인증 요청의 범위 파라미터(예: scope=basic_profile friends_list )를 수정해야 합니다.

그런 다음 개발자 포털(Developer Portal)에서 클라이언트의 리디렉션 URL을 구성해야 합니다.

사용자가 로그인하면 요청한 권한을 승인하라는 메시지가 표시됩니다. 사용자가 이에 수락하면 코드 파라미터를 통해 애플리케이션으로 다시 리디렉션됩니다. 이 코드는 액세스 토큰을 요청할 때 사용됩니다.

에픽게임즈에서는 선택 사항 으로 상태 파라미터도 지원하는데, 이 파라미터는 요청과 콜백 사이의 상태를 유지하는 데 사용할 수 있으며, 사이트 간 요청 위조 공격을 방지하는 데도 유용합니다.

다음은 사용자 인증 후 리디렉션 URL의 예입니다.

https://www.example.com/?code=cfd1de1a8d224203b0445fe977838d81&state=rfGWJux2WL86Zxr6nKApCAnDo8KexEUE

액세스 토큰 요청하기

액세스 토큰을 요청하기 위해 클라이언트는 클라이언트 크리덴셜 및 인증 코드 등을 토큰 엔드포인트에 요청합니다. 에픽게임즈 토큰 엔드포인트는 https://api.epicgames.dev/epic/oauth/v1/token 입니다.

클라이언트 크리덴셜은 기본 인증을 사용하여 Authorization 헤더에 전달됩니다.

요청에는 authorization_code 허가 타입도 지정해야 하며, 인증 절차의 리디렉션 URL과 코드도 포함해야 합니다.

다음은 비밀번호 허가 방식을 사용한 요청 샘플을 보여주는 코드 조각입니다.

POST /epic/oauth/v1/token HTTP/1.1
Host: api.epicgames.dev
Content-Type: application/x-www-form-urlencoded
Authorization: Basic Zm9vOmJhcg==
grant_type=authorization_code&
deployment_id=foo&
scope=basic_profile&
code=cfd1de1a8d224203b0445fe977838d81&
redirect_uri=https://www.example.com

응답에는 다음과 같은 항목이 포함됩니다.

응답

설명

access_token

선택 사항으로 접두사가 있을 수 있는 액세스 토큰입니다(예: eg1~token ). 이 값은 모든 에픽 서비스에 대한 요청에서 Bearer 타입을 사용하여 Authorization 헤더에 있는 그대로 전달되어야 합니다.

expires_in

토큰 만료까지의 시간(초)입니다.

expires_at

ISO 8601 형식의 만료일입니다.

account_id

토큰이 생성된 대상 사용자의 에픽 계정 ID입니다.

client_id

이 토큰을 생성하는 데 사용된 클라이언트 ID입니다.

application_id

클라이언트와 관련된 애플리케이션 ID입니다.

token_type

생성된 토큰 타입으로 값은 항상 bearer 입니다.

refresh_token

클라이언트 구성에 따라 새로고침 토큰이 선택적으로 반환됩니다. 이 새로고침 토큰은 액세스 토큰 만료 전이나 만료 후 세션 연장에 사용할 수 있습니다.

refresh_expires

새로고침 토큰 만료까지의 시간(초)입니다.

refresh_expires_at

ISO 8601 형식의 새로고침 토큰 만료일입니다.

다음은 응답 샘플을 보여주는 코드 조각입니다.

{
  "scope": "basic_profile",
  "token_type": "bearer",
  "access_token": "eyJ0IjoiZXBpY19pZCIsImFsZyI6IlJTMjU2Iiwia2lkIjoibldVQzlxSFVldWRHcnBXb3FvVXVHZkFIYmVWM2NsRnlsdFRYMzhFbXJKSSJ9.eyJhdWQiOiJ4eXphNzg5MWxoeE1WWUdDT043TGduS1paOEhRR0Q1SCIsInN1YiI6Ijk2MjZmNDQxMDU1MzQ5Y2U4Y2I3ZDdkNWE0ODNlYWEyIiwidCI6ImVwaWNfaWQiLCJzY29wZSI6ImJhc2ljX3Byb2ZpbGUgZnJpZW5kc19saXN0IHByZXNlbmNlIiwiYXBwaWQiOiJmZ2hpNDU2N08wM0hST3hFandibjdrZ1hwQmhuaFd3diIsImlzcyI6Imh0dHBzOlwvXC9hcGkuZXBpY2dhbWVzLmRldlwvZXBpY1wvb2F1dGhcL3YxIiwiZG4iOiJLcm5icnkiLCJleHAiOjE1ODgyODYwODMsImlhdCI6MTU4ODI3ODg4Mywibm9uY2UiOiJuLUI1cGNsSXZaSkJaQU1KTDVsNkdvUnJDTzNiRT0iLCJqdGkiOiI2NGMzMGQwMjk4YTM0MzdjOGE3NGU1OTAxYzM0ODZiNSJ9.MZRoCRpjIb--dD7hxoo2GvjSPhUSNpOq1FhtShTBmzMJ1qlHFPzNaUiAEETAc3mabGPKyOxUP6Q1FBadr_P_UtbtB7kf34hN2VTv5czW6WOx1HdpjwUQZuxFyDc_aix7FCS0Egu4rZlC65b-B0FUVlial_s_FrH8ou5L_d-4I0KVpIwtv-b_M6EQ9jtLdQRfMaP6aV0rIerrbqFZ617Pe7XT4IO9jZFwM8F5aDTeDHkkOO41wyVibrm38799lP4B65RIv9CwbAL-TVmV1L5gFYITaZhi5ShfZzTvxAk-3Dxwp8c5JvcO68zpbya5gFSAfhsd7vt9YLU0gQR2uXq3Vw",
  "refresh_token": "eyJ0IjoiZXBpY19pZCIsImFsZyI6IlJTMjU2Iiwia2lkIjoibldVQzlxSFVldWRHcnBXb3FvVXVHZkFIYmVWM2NsRnlsdFRYMzhFbXJKSSJ9.eyJhdWQiOiJ4eXphNzg5MWxoeE1WWUdDT043TGduS1paOEhRR0Q1SCIsInN1YiI6Ijk2MjZmNDQxMDU1MzQ5Y2U4Y2I3ZDdkNWE0ODNlYWEyIiwidCI6ImVwaWNfaWQiLCJhcHBpZCI6ImZnaGk0NTY3TzAzSFJPeEVqd2JuN2tnWHBCaG5oV3d2Iiwic2NvcGUiOiJiYXNpY19wcm9maWxlIGZyaWVuZHNfbGlzdCBwcmVzZW5jZSIsImlzcyI6Imh0dHBzOlwvXC9hcGkuZXBpY2dhbWVzLmRldlwvZXBpY1wvb2F1dGhcL3YxIiwiZG4iOiJLcm5icnkiLCJleHAiOjE1ODgzMDc2ODMsImlhdCI6MTU4ODI3ODg4MywianRpIjoiYzczYjA2NmUyZDU4NGVkNTk0NjZiOThiNzI3NzJiMjAifQ.O-eVa46NimubKwxe9SwlHxciivu0XWe1-DSL74mMiA_PpPoW0yKL9DfmsLxiPCwsRB5_hQTc6_FM7G1FyfKtX_VVAp90MZPkhCbAbfKmTpQVcL0Ya6kve4KMG8KxeLVfLLhubCbJTYlnDNVHobbpvpQtHd8Ys321ZNDJj05l_tnZzdgus-xmCO6orX4UP4wDd1jAOXXeqRT47OXuLCgSE0q6Osfh-ENPwh6ph1i7ld759xPV0oNcQb8XiPxnT6_FUmFugzG1YS1z9bTnVWmbP2RmYluue5VQm5EKGJZ91Alve8s2eNEtDfUqaBLZ45pqGkc1KjbYTtP0a_1ue2BpkQ",
  "expires_in": 7200,
  "expires_at": "2020-04-30T22:34:43.549Z",
  "refresh_expires_in": 28800,
  "refresh_expires_at": "2020-05-01T04:34:43.549Z",
  "account_id": "9626f441055349ce8cb7d7d5a483eaa2",
  "client_id": "xyza7891lhxMVYGCON7LgnKZZ8HQGD5H",
  "application_id": "fghi4567O03HROxEjwbn7kgXpBhnhWwv"
}

반드시 인증(Authorization) 헤더에 존재하는 상태 그대로 액세스 토큰을 에픽게임즈 서비스에 전달해야 합니다. 예를 들면 다음과 같습니다. Authorization: Bearer eyJraWQiOiJ0RkM...

엔드포인트

이름

URL

OpenID 구성

https://api.epicgames.dev/epic/oauth/v1/.well-known/openid-configuration

인증

https://www.epicgames.com/id/authorize

토큰

https://api.epicgames.dev/epic/oauth/v1/token

사용자 정보

https://api.epicgames.dev/epic/oauth/v1/userInfo

토큰 정보

https://api.epicgames.dev/epic/oauth/v1/tokenInfo

JWK

https://api.epicgames.dev/epic/oauth/v1/.well-known/jwks.json