> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 타이틀 서비스에 대한 XBOX 서비스 인증

> pXUID 및 gamertag와 같은 암호화된 JWT 클레임이 있는 파트너 XSTS 토큰을 사용하여 사용자 지정 XBOX Live 타이틀 웹 서비스에서 사용자를 인증합니다.

이 항목에서는 사용자 지정 타이틀 서비스에서 XBOX 서비스 인증을 사용하는 방법을 설명합니다.

XBOX 서비스 외에도 XSTS 토큰은 사용자 지정 타이틀 서비스의 인증 및 권한 부여에도 사용할 수 있습니다. 사용자 지정 웹 서비스는 *파트너 XSTS 토큰*에 포함된 XBOX 서비스에서 발급한 클레임을 사용할 수 있습니다.

파트너 XSTS 토큰은 대상 서비스를 위해 특별히 정의된 클레임 집합을 포함합니다. 토큰 클레임은 XBOX 서비스에서 발급하고 서명하므로 게임 클라이언트 데이터보다 훨씬 변조 방지가 뛰어납니다. 사용자 지정 타이틀 서비스는 사용자/기기 ID 및 권한을 검증하기 위해 XSTS 토큰 클레임을 사용해야 합니다. 파트너 XSTS 토큰과 관련된 클레임의 몇 가지 예로는 gamertag, 플레이어 권한, 연령 그룹 및 해당 타이틀의 게시자 아래에서 플레이어에게 고유한 Partner XUID(pXUID)가 있습니다. 클레임의 전체 목록은 [XBOX 서비스 보안 토큰 클레임](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-token-claims)을 참조하세요.

XBOX 서비스는 사용자 지정 웹 서비스에서만 읽을 수 있고 클라이언트에는 불투명하도록 파트너 XSTS 토큰을 구성합니다. 이를 달성하기 위해 토큰은 암호화된 JSON 웹 토큰(JWT)이며 RFC 7519 표준을 준수합니다. 토큰은 개인 및 공개 암호화 키를 사용하는 비대칭 암호화를 통해 보호됩니다. 이러한 방식으로 개인 키를 가진 웹 서비스만이 파트너 XSTS 토큰을 해독하고 검사할 수 있습니다.

각 토큰 구성은 Partner Center의 *게시자 수준*에서 수행되고 사용할 수 있습니다. 개발자는 토큰 이름, 사용 가능한 클레임 및 암호화 인증서(키), 그리고 토큰 만료 시간을 지정합니다. 이 구성은 특정 *신뢰 당사자*를 위한 것입니다.

파트너 XSTS 토큰 사용은 보안을 위해 HTTPS 연결로 제한되며 Partner Center의 **웹 서비스 엔드포인트** 구성을 통해 정의됩니다. 이 구성은 파트너 XSTS 토큰과 웹 서비스 URI의 페어링을 지정합니다. 신뢰 당사자 구성과 달리 웹 서비스 엔드포인트는 Partner Center에서 *타이틀별*로 구성됩니다.

## 신뢰 당사자 구성

사용자 지정 웹 서비스를 사용하려면 타이틀이 먼저 Partner Center에서 Single Sign-On 구성을 완료해야 합니다. 자세한 내용은 [신뢰 당사자 구성](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/relying-parties/live-relying-parties-nav)을 참조하세요.

신뢰 당사자 구성은 *게시자 수준*과 모든 샌드박스에서 구성됩니다. 가능한 경우 (다른 타이틀에서) 동일한 타이틀 서비스에 대해 동일한 신뢰 당사자 구성을 사용하는 것이 모범 사례입니다.

## 웹 서비스 엔드포인트 구성

신뢰 당사자 구성 외에도, 타이틀 서비스가 파트너 XSTS 토큰을 사용하려면 Partner Center에서 서비스 엔드포인트를 구성해야 합니다. 자세한 내용은 [웹 서비스](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/web-services/live-web-services-nav)를 참조하세요.

웹 서비스 엔드포인트는 전역 `DefaultNsal` 구성에서 *타이틀 수준*으로 구성됩니다. `DefaultNsal`은 현재 타이틀의 유일한 구성 유형입니다. 이전에 구성된 타이틀은 `CertificationNsal` 및 `RetailNsal`과 같은 다른 환경을 반영하는 다른 구성 유형을 사용할 수 있습니다. 구성을 단순화하기 위해 이러한 구성 유형은 새 타이틀에서 사용할 수 없습니다.

### 웹 서비스 SSL 인증서

모든 웹 서비스 엔드포인트는 HTTPS를 사용해야 하며 신뢰할 수 있는 인증 기관(CA)에서 발급한 SSL 인증서를 사용해야 합니다. 이러한 인증서는 웹 서비스 엔드포인트 구성에서 지정하지 않아야 합니다.

개발 및 테스트를 위해 타이틀은 자체 서명된 SSL 인증서를 사용할 수 있지만 신뢰할 수 있는 루트 인증서를 사용할 수 있는 경우 권장되지 않습니다.
자체 서명된 SSL 통신은 XBOX 콘솔에서 기본적으로 신뢰되지 않습니다.
Partner Center의 타이틀 Single Sign-On 페이지에서 웹 서비스 엔드포인트 정의에 인증서를 추가하지 않는 한 HTTPS 연결이 실패합니다.

인식된 CA 목록은 보안 문서의 [참가자 목록 - Microsoft 신뢰할 수 있는 루트 프로그램](https://aka.ms/trustcertpartners)을 참조하세요. 서비스는 [letsencrypt.org](https://letsencrypt.org)와 같은 조직에서 신뢰할 수 있는 무료 SSL 인증서를 얻을 수도 있습니다.

## 토큰 검색 및 연결 흐름

모든 타이틀 서비스 엔드포인트는 인증 및 권한 부여를 위해 파트너 XSTS 토큰을 요구해야 합니다. 이 정보가 없으면 서비스와의 통신이 거부되어야 합니다.

웹 서비스의 경우 파트너 XSTS 토큰과 사용자 식별(사용자 해시)이 요청의 `Authentication` 헤더에 포함되어야 합니다. 이러한 헤더의 구조에 대한 자세한 내용은 [XBOX 서비스 보안 토큰(XSTS 토큰)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens)을 참조하세요.

보안 TCP/UDP 서비스의 경우 파트너 XSTS 토큰과 사용자 식별(사용자 해시)이 초기 권한 부여/핸드셰이크 메시지에 포함되어야 합니다. 이 정보가 없으면 서비스와의 통신이 거부되어야 합니다. 이러한 연결의 경우 서비스의 도메인을 반영하는 웹 서비스 엔드포인트 URI로 자리 표시자를 지정할 수 있습니다.

## 클라이언트에서 파트너 XSTS 토큰 획득 및 HTTPS 요청 전송

파트너 XSTS 토큰과 서명 헤더 데이터는 [XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureutf16async) API를 통해 다음 흐름으로 게임 클라이언트에서 얻습니다.

1. 현재 사용자에 대해 `XUserGetTokenAndSignatureUtf16Async`를 호출합니다. API 호출에 서비스 URL과 (해당하는 경우) 사용자 지정 헤더 또는 메시지 본문을 포함합니다.
   API는 대상 엔드포인트 또는 XBOX 서비스와 함께 사용할 XSTS 토큰 및 메시지 서명을 검색합니다.
2. 비동기 결과에서 `XUserGetTokenAndSignatureUtf16Result`를 통해 XSTS 토큰과 서명을 검색합니다.
   `XUserGetTokenAndSignatureUtf16Result`는 암호화된 XSTS 토큰을 반환합니다. 타이틀은 반환된 토큰을 불투명한 데이터로 취급해야 합니다. 토큰 데이터는 후속 서비스 호출 이후에는 디스크에 기록하거나 타이틀 공간에 캐시해서는 안 됩니다. 토큰 캐싱은 `XUserGetTokenAndSignatureUtf16Async`에 의해 처리됩니다.
3. Microsoft Windows HTTP Services(WinHTTP), XSTS 토큰 및 서명 값을 사용하여 대상 엔드포인트에 대한 HTTPS 요청을 만듭니다.
   모든 HTTPS 호출은 XSTS 토큰 값을 `Authentication` 헤더에 추가하고 서명 값을 `Signature` 헤더로 추가하여 WinHTTP API를 통해 수행되어야 합니다.

보안 TCP/UDP 서비스의 경우 다음과 같은 변경 사항이 있는 동일한 흐름이 사용됩니다.

* 서비스 호출 URL 대신 타이틀은 서비스의 자리 표시자 URI를 지정합니다.
* 인증 데이터는 TCP/UDP 연결의 초기 권한 부여/핸드셰이크 중에 사용됩니다.

## 서버에서 파트너 XSTS 토큰 처리

파트너 XSTS 토큰이 타이틀 서비스에 의해 수신된 후 서비스는 토큰의 진위를 구문 분석하고 해독하고 검증해야 합니다.
XSTS 토큰 구문 분석 및 검증에 대한 자세한 내용은 [XBOX 서비스 보안 토큰(XSTS 토큰)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens)을 참조하세요.

서비스 개발자는 검토 및 테스트를 위해 [Game Service 샘플](https://aka.ms/xgdsamples) 및 [Xfest 2019 프레젠테이션 XSTS Auth and Server to Server Made Easy](https://forums.xboxlive.com/articles/96129/xfest-online-2019-archive.html)를 사용하는 것이 강력히 권장됩니다.
샘플에는 토큰 처리가 있는 전체 서비스 라이브러리가 있습니다.

### 인증 및 권한 부여

토큰이 구문 분석되고 해독되고 검증된 후 서비스는 토큰의 클레임을 신뢰할 수 있습니다.
모든 XSTS 토큰 클레임 목록은 [XBOX 서비스 보안 토큰 클레임](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-token-claims)을 참조하세요.
서비스는 먼저 이러한 클레임을 서비스 수준 인증 및 권한 부여에 사용해야 합니다.
파트너 XSTS 토큰에 포함된 정보는 항상 권위 있는 것으로 간주되어야 합니다.
서비스 호출은 요청의 다른 부분을 통해 이 정보를 복제할 필요가 없습니다.

사용자 ID에 대해서는 특별한 주의가 필요합니다. 항상 XSTS 토큰 클레임을 통해 검증되어야 하며 서비스 요청에 대한 다른 소스의 검증 없이는 사용해서는 안 됩니다. 인증 목적으로 사용자를 식별하기 위해 타이틀 서비스에는 두 가지 옵션이 있습니다.

* **/user/pXUID (ptx)** 클레임.
  계정 연결에만 ID가 필요한 시나리오의 경우 Partner XUID(pXUID)를 사용해야 합니다. 이 클레임은 현재 게시자 아래에서 사용자의 XBOX 서비스 계정의 고유 식별자를 노출합니다.
* **/user/XID** 클레임.
  서비스가 사용자 ID를 반환하거나 XBOX 서비스에 서비스 간 호출을 수행해야 하는 모든 시나리오의 경우 사용자의 XUID가 필요합니다. 이러한 서비스의 예로는 사용자 지정 순위표 또는 매치메이킹 서비스, 또는 XBOX 서비스 서비스 호출을 통해 구매를 검증하는 서비스가 있습니다.

타이틀 서비스는 파트너 XSTS 토큰에서 XUID를 활성화하고 XUID 정보를 저장할 권한이 있어야 합니다. 개발자 파트너 관리자와 협력하여 해당 프로세스를 진행하세요. 그러나 pXUID 사용에는 추가 보안 검토나 권한이 필요하지 않습니다.

토큰 클레임에서 gamertag를 사용할 수 있지만 사용자의 고유 식별자로 사용해서는 안 됩니다. gamertag는 변경될 수 있으므로 임시 표시 또는 캐싱 목적으로만 사용할 수 있습니다.

권한 부여 목적으로 */user/privileges* 클레임을 통해 사용자의 XBOX 서비스 권한을 얻을 수 있습니다. 이러한 권한은 XBOX 서비스에 노출된 권한과 동일하며 서비스 액세스를 위해 검증되어야 합니다. 사용자에게 충분한 액세스 권한이 없는 경우 서비스는 HTTP/401 오류 코드를 제공해야 합니다.

사용자 ID 및 권한 검증 후 서비스는 추가 파트너 토큰 클레임을 사용하여 서비스 논리에 대한 사용자 및 기기에 대한 자세한 정보를 검색할 수 있습니다.

<Note>PXUID는 Partner Center에서 신뢰 당사자를 만들 때 선택한 비즈니스 파트너로 범위가 지정됩니다. 둘 이상의 신뢰 당사자에 대한 x 토큰으로 작업하는 경우 PXUID 값이 일치하려면 동일한 비즈니스 파트너를 공유해야 합니다. 비즈니스 파트너 및 신뢰 당사자 구성에 대한 자세한 내용은 [Partner Center에서 웹 서비스 설정](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/web-services/live-web-services)을 참조하세요.</Note>

### 토큰 만료 및 새로 고침

XSTS 토큰은 Partner Center의 해당 신뢰 당사자에 구성된 특정 기간 동안 유효합니다.
XSTS 토큰의 기본 만료 시간은 4시간입니다.
각 토큰에는 서비스가 토큰 클레임을 수락하기 전에 검증해야 하는 타임스탬프가 포함되어 있습니다.
만료된 토큰이 사용자 지정 서비스에 제공되면 서비스는 HTTP/401 오류를 반환해야 합니다.

클라이언트의 [XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureutf16async)가 XSTS 토큰 만료 및 캐싱을 처리하므로 게임 서비스에 요청을 보내기 전에 매번 호출되어야 합니다.
API는 타이틀이 항상 유효한 토큰을 수신하도록 보장합니다.
타이틀은 그렇지 않으면 토큰을 캐시해서는 안 됩니다.


## Related topics

- [XBOX 서비스 인증(목차)](/ko/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-service-authentication-nav.md)
- [XBOX 서비스 사용자 권한의 서버 측 처리](/ko/services/xbox-services/fundamentals/identity/privileges/concepts/live-user-privileges-server.md)
- [XBOX 서비스 인증](/ko/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-xbox-live-authentication.md)
- [XBOX 서비스에 대한 서비스 호출](/ko/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/live-s2s-calls-nav.md)
- [타이틀 웹사이트에 대한 XBOX 서비스 로그인](/ko/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-website-authentication.md)
