> ## 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.

# Microsoft Store API로 서비스 인증하기

> Microsoft Store 서비스에 인증하기 위해 위임된 인증 X-토큰 또는 User Store ID를 얻고 사용하는 방법을 설명합니다.

이 문서에서는 위임된 X-토큰 또는 User Store ID를 사용하여 Microsoft Store API에 대한 서비스 간 호출을 인증하는 방법을 설명합니다.

* [User Store ID 및 Microsoft Entra ID](#authenticating-with-microsoft-entra-id-and-user-store-ids): 인증 및 결과를 Microsoft Store 앱에 로그인한 사용자 계정과 연결합니다.
* [위임된 인증 X-토큰](#authenticating-with-delegated-authentication-x-tokens): 인증 및 결과를 현재 게임을 플레이 중인 사용자의 XBOX 서비스 계정과 연결합니다.

새로운 XBOX 및 PC 타이틀에는 User Store ID 인증을 사용하세요. X-토큰은 활성 플레이어 계정으로 범위가 지정되며 일부 서비스(반복 결제 및 구매 포함)에서는 지원되지 않습니다. PC에서는 구매 계정과 플레이 계정이 다를 수 있습니다. 자세한 내용은 [PC에서 스토어 계정 불일치 시나리오 처리](/publishing/xstore-commerce/xstore-mismatched-accounts)를 참고하세요.

크로스 플랫폼 및 장시간 실행되는 서비스 흐름에는 User Store ID를 사용하세요. 활성 클라이언트 상호 작용 없이도 갱신할 수 있기 때문입니다. 반면 X-토큰 흐름은 최대 수명 이후 새로 고침된 클라이언트 연결이 필요합니다.

다음 섹션에서는 각 인증 유형에 필요한 구성 및 리소스를 요약합니다.

## Microsoft Entra ID 및 User Store ID로 인증

모든 Microsoft Store 서비스 API는 Microsoft Entra ID 및 User Store ID를 통한 인증을 지원합니다. 이 인증을 사용하려면 사용자(또는 조직)가 Microsoft Entra ID 테넌트를 보유하고 그 아래에 애플리케이션 ID를 등록해야 합니다. 애플리케이션을 등록하려면 계정에 테넌트 내 전역 관리자 역할이 있어야 합니다. 이미 Microsoft Office 365 또는 기타 Microsoft 비즈니스 서비스를 사용하는 경우 Azure 포털에서 관리할 수 있는 Microsoft Entra ID 테넌트가 이미 있습니다.

이 인증 유형에 필요한 User Store ID를 얻는 방법에 대한 안내는 [서비스 간 인증을 위한 User Store ID 요청](/publishing/xstore-commerce/xstore-requesting-userstoreid)을 참고하세요.

<Note>
  PC에서 사용 권한(entitlement)은 현재 타이틀을 플레이 중인 사용자가 아니라 Microsoft Store 앱에 로그인한 사용자와 연결됩니다. 계정이 서로 다를 수 있으므로 PC 타이틀은 [PC에서 스토어 계정 불일치 시나리오 처리](/publishing/xstore-commerce/xstore-mismatched-accounts)의 정보를 검토하는 것이 좋습니다.
</Note>

Microsoft Entra 인증 흐름을 사용하여 Microsoft Store API를 호출할 때 요청의 `Authorization` 헤더에서 Microsoft Entra 액세스 토큰이 다음과 같이 사용됩니다.

```bash theme={null}
Authorization: Bearer <Entra ID access token>  
```

샌드박스에서 작업하는 경우 JSON 요청 본문에 다음 클레임을 포함하세요. 이 클레임이 없으면 결과가 기본적으로 RETAIL로 지정됩니다.

예:

```json theme={null}
  "sbx": "XDKS.1"
```

<Info>
  **개발자 관리형 소모품 제한 사항:** User Store ID 및 Entra ID 인증은 샌드박스 환경의 대부분의 Microsoft Store API 호출에서 작동하지만, [Consume API](/reference/microsoft-store-apis/xstore-v8-consume)는 개발 샌드박스의 개발자 관리형 소모품에 대해 이 인증 방법을 지원하지 않습니다. 샌드박스에서 개발자 관리형 소모품을 소모하려면 대신 [위임된 인증 XSTS 토큰](#authenticating-with-delegated-authentication-x-tokens)을 사용하세요.
</Info>

또한 클라이언트의 User Store ID를 포함하여 다음 표에 표시된 수혜자(beneficiary) 값을 포함해야 합니다.

| 매개변수                   | 유형       | 설명                                                                                                                                                                | 필수 |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `identityType`         | `string` | 문자열 값 `b2b`를 지정합니다.                                                                                                                                               | 예  |
| `identityValue`        | `string` | 소모품 제품을 이행된(fulfilled) 상태로 보고하려는 사용자의 ID를 나타내는 [User Store ID 키](/publishing/xstore-commerce/xstore-requesting-userstoreid#step-4-create-a-user-store-id-key)입니다. | 예  |
| `localTicketReference` | `string` | 반환된 응답에 대해 요청된 식별자입니다. User Store ID 키의 *userId* [클레임](/publishing/xstore-commerce/xstore-requesting-userstoreid#claims-in-a-user-store-id-key)과 동일한 값을 사용하세요.    | 예  |

예:

```json theme={null}
  "beneficiaries": [
    {
        "identitytype" : "b2b",
        "identityValue" : "eyJ0eXAiOiJ...",
        "localTicketReference" : "testReference"
    }
  ],
```

User Store ID 인증을 얻고 관리하고 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참고하세요.

* [Microsoft.StoreServices (GitHub)](https://github.com/microsoft/Microsoft-Store-Services): 백엔드에서 Microsoft Store 서비스를 인증하고 호출하기 위한 라이브러리 및 소스입니다.
* [Microsoft.StoreServices Sample (GitHub)](https://github.com/microsoft/Microsoft-Store-Services-Sample): 인증, 커머스 통합, 환불 조정 패턴을 시연하는 서비스 샘플입니다.
* [서비스 간 인증을 위한 User Store ID 요청](/publishing/xstore-commerce/xstore-requesting-userstoreid)
* [User Store ID 키 갱신](/publishing/xstore-commerce/xstore-renew-userstoreid)
* [서비스에서 제품 사용 권한 관리](https://learn.microsoft.com/windows/uwp/monetize/view-and-grant-products-from-a-service)

### Microsoft Store API 호출 다이어그램

다음 다이어그램은 서비스에서 User Store ID를 사용하여 Microsoft Store API를 호출하는 프로세스를 설명합니다.

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/b2b-2.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=2d3f87bf7ab2c6e0b0c58085b1560506" alt="User Store ID를 사용하여 Microsoft Store API를 호출하는 프로세스를 보여주는 다이어그램. 게임 서비스는 Microsoft Entra ID와 토큰을 교환하고 Store collections 또는 products API를 호출합니다." width="826" height="431" data-path="images/xstore/b2b-2.png" />

### User Store ID 및 Microsoft Entra ID 인증으로 제품을 보고 관리하기 위한 추가 구성

Microsoft Entra ID 및 User Store ID를 사용하려면 Partner Center에서 게임의 **Product collections and purchases** 설정에 Microsoft Entra 애플리케이션의 클라이언트 ID를 추가하세요. Collections 및 Purchase 서비스를 통해 제품 및 추가 기능에 액세스하기 위해 최대 두 개의 클라이언트 ID를 구성할 수 있습니다. 제품이 Microsoft Entra 애플리케이션 클라이언트 ID에 제대로 연결되지 않은 경우 가장 흔한 증상은 Collections 호출이 성공하지만 결과에 항목이 없다는 것입니다.

#### Microsoft Entra ID 및 User Store ID를 통해 서비스가 제품을 볼 수 있도록 구성

1. 게임의 Partner Center 페이지에서 왼쪽 패널의 **Product collections and purchases**를 선택합니다.
2. 서비스를 인증하는 데 사용 중인 Microsoft Entra 애플리케이션의 클라이언트 ID를 입력합니다.
3. **Save** 버튼을 선택합니다.
4. 샌드박스 또는 개발자 환경의 Microsoft Store에 게임 제품과 해당 제품의 모든 추가 기능을 다시 게시합니다.

게시 프로세스가 완료된 후 서비스 호출에서 올바른 항목이 반환되어야 합니다.

## 위임된 인증 X-토큰으로 인증

위임된 인증 X-토큰을 사용하여 서비스 간 호출을 인증하려면 다음 형식으로 `Authorization` 헤더를 요청에 추가합니다.

```JSON theme={null}
Authorization: XBL3.0 x=<user hash>;<X-token>
```

X-토큰의 대상 신뢰 당사자(Relying Party)는 레거시 XBOX Inventory 서비스와 마찬가지로 [https://licensing.xboxlive.com](https://licensing.xboxlive.com)이어야 합니다. 이전 서비스에서 XBOX Inventory를 호출하도록 설정한 경우 이 엔드포인트에서 동일한 토큰을 재사용할 수 있습니다. 또한 지정된 엔드포인트의 서명 정책과 일치하는 서명 헤더도 필요합니다.

위임된 인증 X-토큰 및 서명을 얻고 관리하고 사용하는 방법에 대한 자세한 내용은 다음 리소스를 참고하세요.

* [Game Service Sample](https://aka.ms/gdkdl): 클라이언트의 X-토큰 유효성 검사 및 처리, 서버 간 인증, 커머스 서비스 등을 시연하는 포괄적인 웹 서비스 샘플입니다. 최신 버전은 [GDK 다운로드 사이트](https://aka.ms/gdkdl)에서 다운로드하세요. All Samples의 최신 릴리스를 다운로드합니다. Game Service Sample은 다운로드된 .zip 파일의 samples\Live\GameService 아래에 있습니다.
* [Xfest 2019 - XSTS Auth and Server to Server made Easy](https://forums.xboxlive.com/articles/96129/xfest-online-2019-archive.html): X-토큰의 개요 및 설명과 Game Service Sample이 자체 서비스 간 인증 노력을 시작하는 데 어떻게 도움이 될 수 있는지에 관한 내용입니다. 프레젠테이션 정보를 다운로드하려면 아카이브 사이트에서 **GDK Track Downloads**를 선택하세요.
* **XBOX 서비스 인증 및 서비스 간 호출**: 인증, X-토큰, XBOX 서비스에 대한 서비스 간 호출에 필요한 단계 및 호출에 대한 자세한 문서입니다.

### 위임된 인증 X-토큰으로 제품을 보고 관리하기 위한 추가 구성

X-토큰은 Partner Center 내의 Business Partner ID에 연결되어 있으므로, 제품을 동일한 Business Partner ID에 연결해야 합니다. 실질적으로 제품은 Dev Studio ID가 신뢰 당사자에서 사용하는 Business Partner ID와 일치하는 Product Group에 있어야 합니다.

제품이 올바른 Business Partner ID에 제대로 연결되지 않은 경우 가장 흔한 증상은 Collections 호출이 성공하지만 결과에 항목이 반환되지 않는다는 것입니다. 자세한 내용은 포럼 게시물 [B2B call to Collections LicensePreview service returns empty results (Partner Center configured game)](https://forums.xboxlive.com/questions/78683/b2b-call-to-collections-licensepreview-service-ret.html)를 참고하세요.

#### Partner Center에서 제품 및 웹 서비스를 구성하려면

1. 웹 서비스의 **Generate Certificate** 링크를 사용하여 Business Partner Certificate를 만듭니다. (**Developer Settings** > **XBOX Live** > **Web Services**를 선택합니다.) 신뢰 당사자와 연결된 웹 서비스의 행에 있는 링크를 선택합니다.
2. Business Partner 관리 UI로 이동하여(**Developer Settings** > **XBOX Live** > **Business Partner** 선택) 1단계에서 사용한 웹 서비스와 일치하는 Business Partner ID를 복사합니다. (Business Partner ID 예: 12345678-9012-3456-7890-123456789012)
3. 제품의 **Partner Center Overview** 페이지에서 **Create a new**를 선택한 다음 **Product group**을 선택합니다.
4. 이 제품 그룹을 Dev Studio에 할당하거나, 아직 없다면 **Create a new developer studio**를 선택합니다.
5. 선택한 Dev Studio의 ID가 2단계의 Business Partner ID와 일치하는지 확인합니다. 비어 있는 경우 Business Partner ID를 **Dev Studio ID (optional)** 에 복사합니다. 이 필드에 이미 사용 중인 값이 있는 경우 기존의 서비스 간 제품 매핑이 손상되지 않도록 덮어쓰기보다는 새 Dev Studio를 만드세요.
6. Dev Studio가 Business Partner의 일치하는 ID로 구성된 후 만든 Product Group으로 돌아갑니다. **Included in this product group** 목록에 게임과 모든 제품을 추가합니다.
7. **Save**를 선택하여 제품 그룹 생성을 완료합니다.
8. 게임의 XBOX Settings UI로 이동하여 연결된 Business Partner가 2단계에서 사용한 것과 동일한지 확인합니다.
9. 제품 그룹의 모든 항목을 샌드박스 또는 개발자 환경의 Microsoft Store에 다시 게시합니다.

게시 프로세스가 완료된 후 서비스 호출에서 올바른 항목이 반환되는 것을 볼 수 있습니다.

## 참고

[Microsoft Store 서비스 API](/reference/microsoft-store-apis/index)

[서비스 간 인증을 위한 User Store ID 요청](/publishing/xstore-commerce/xstore-requesting-userstoreid)

[User Store ID 키 갱신](/publishing/xstore-commerce/xstore-renew-userstoreid)


## Related topics

- [Microsoft Store 서비스 API](/ko/reference/microsoft-store-apis/xstore-nav.md)
- [GDK 커머스 시스템 개요](/ko/publishing/xstore-commerce/xstore-overview.md)
- [서비스 간 인증을 위한 User Store ID 요청](/ko/publishing/xstore-commerce/xstore-requesting-userstoreid.md)
- [XBOX 서비스에 대한 서비스 호출](/ko/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/live-s2s-calls-nav.md)
- [선택 서비스](/ko/build/gdk-and-engines/optional-services.md)
