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

# Autenticación de los servicios de XBOX para servicios de título

> Use tokens XSTS de asociado con notificaciones JWT cifradas como pXUID y gamertag para autenticar a los usuarios en su servicio web de título personalizado de XBOX Live.

En este tema se describe cómo usar la autenticación de los servicios de XBOX con un servicio de título personalizado.

Además de para los servicios de XBOX, los tokens XSTS también se pueden usar para la autenticación y autorización de servicios de título personalizados. Los servicios web personalizados pueden usar notificaciones emitidas por los servicios de XBOX que se incluyen en un *token XSTS de asociado*.

Un token XSTS de asociado contiene un conjunto de notificaciones definidas específicamente para el servicio de destino. Las notificaciones del token las emiten y firman los servicios de XBOX y, por lo tanto, son mucho más resistentes a manipulaciones que cualquier dato del cliente del juego. Los servicios de título personalizados deben usar las notificaciones del token XSTS para validar la identidad y la autoridad del usuario o dispositivo. Algunos ejemplos de notificaciones que incluye un token XSTS de asociado son el gamertag, los privilegios del jugador, el grupo de edad y el XUID de asociado (pXUID), que es único para el jugador bajo el publicador de ese título. Para obtener una lista completa de las notificaciones, consulte [Notificaciones de tokens de seguridad de los servicios de XBOX](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-token-claims).

Los servicios de XBOX construyen el token XSTS de asociado de forma que solo pueda leerlo un servicio web personalizado y sea opaco para el cliente. Para lograrlo, el token es un JSON Web Token (JWT) cifrado y cumple el estándar RFC 7519. El token está protegido mediante cifrado asimétrico que usa claves de cifrado privadas y públicas. De este modo, solo el servicio web que tiene la clave privada puede descifrar e inspeccionar el token XSTS de asociado.

Cada configuración de token se realiza y está disponible a *nivel de publicador* en el Partner Center. El desarrollador especifica el nombre del token, las notificaciones disponibles, el certificado de cifrado (claves) y el tiempo de expiración del token. Esta configuración corresponde a un *usuario de confianza* específico.

El uso del token XSTS de asociado está limitado a conexiones HTTPS para garantizar la seguridad y se define mediante la configuración de **Webservice Endpoint** en el Partner Center. Esta configuración especifica el emparejamiento del token XSTS de asociado y los URI del servicio web. A diferencia de la configuración del usuario de confianza, los puntos de conexión de servicio web se configuran *por título* en el Partner Center.

## Configuración del usuario de confianza

Para usar servicios web personalizados, un título primero debe completar la configuración de inicio de sesión único en el Partner Center. Para obtener más información, consulte [Configurar el usuario de confianza](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/relying-parties/live-relying-parties-nav).

La configuración del usuario de confianza se realiza a *nivel de publicador* y en todos los sandboxes. Como procedimiento recomendado, use las mismas configuraciones de usuario de confianza para el mismo servicio de título (en distintos títulos) siempre que sea posible.

## Configuración del punto de conexión de servicio web

Además de la configuración del usuario de confianza, debe configurarse un punto de conexión de servicio en el Partner Center para que un servicio de título use tokens XSTS de asociado. Para obtener más información, consulte [Servicios web](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/web-services/live-web-services-nav).

Los puntos de conexión de servicio web se configuran a *nivel de título* en la configuración global `DefaultNsal`. `DefaultNsal` es el único tipo de configuración para los títulos actuales. Los títulos configurados anteriormente pueden usar otros tipos de configuración que reflejan otros entornos, como `CertificationNsal` y `RetailNsal`. Para simplificar la configuración, estos tipos de configuración no están disponibles para los títulos nuevos.

### Certificados SSL del servicio web

Todos los puntos de conexión de servicio web deben usar HTTPS y certificados SSL emitidos por entidades de certificación (CA) de confianza. Estos certificados no deben especificarse en la configuración del punto de conexión de servicio web.

Para el desarrollo y las pruebas, los títulos pueden usar certificados SSL autofirmados, pero no se recomienda si se puede usar un certificado raíz de confianza.
De forma predeterminada, la comunicación SSL autofirmada no es de confianza en la consola XBOX.
La conexión HTTPS falla a menos que el certificado se agregue a la definición de Webservice Endpoint en la página de inicio de sesión único del título en el Partner Center.

Para obtener una lista de las CA reconocidas, consulte [List of Participants - Microsoft Trusted Root Program](https://aka.ms/trustcertpartners) en la documentación de seguridad. Los servicios también pueden obtener un certificado SSL gratuito y de confianza de organizaciones como [letsencrypt.org](https://letsencrypt.org).

## Recuperación del token y flujo de conexión

Todos los puntos de conexión del servicio del título deben requerir un token XSTS de asociado para la autenticación y autorización. Sin esta información, la comunicación con el servicio debe rechazarse.

Para los servicios web, el token XSTS de asociado y la identificación del usuario (hash de usuario) deben incluirse en el encabezado `Authentication` de la solicitud. Para obtener información detallada sobre la estructura de estos encabezados, consulte [Tokens de seguridad de los servicios de XBOX (tokens XSTS)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens).

Para los servicios TCP/UDP seguros, el token XSTS de asociado y la identificación del usuario (hash de usuario) deben incluirse en el mensaje inicial de autorización/protocolo de enlace. Sin esta información, la comunicación con el servicio debe rechazarse. Para estas conexiones, se puede especificar un marcador de posición como URI de Webservice Endpoint que refleje el dominio del servicio.

## Obtención de un token XSTS de asociado en el cliente y envío de la solicitud HTTPS

El cliente del juego obtiene el token XSTS de asociado y los datos del encabezado de firma mediante la API [XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureutf16async) con el siguiente flujo.

1. Llame a `XUserGetTokenAndSignatureUtf16Async` con el usuario actual. Incluya la URL del servicio y (si procede) los encabezados personalizados o el cuerpo del mensaje en la llamada a la API.
   La API recupera un token XSTS y una firma de mensaje para usarlos con el punto de conexión de destino o el servicio de XBOX.
2. Recupere el token XSTS y la firma mediante `XUserGetTokenAndSignatureUtf16Result` a partir del resultado asincrónico.
   `XUserGetTokenAndSignatureUtf16Result` devuelve un token XSTS cifrado. Los títulos deben tratar el token devuelto como datos opacos. Los datos del token no deben escribirse en disco ni almacenarse en caché en el espacio del título más allá de la llamada de servicio posterior.  El almacenamiento en caché de tokens lo administra `XUserGetTokenAndSignatureUtf16Async` automáticamente.
3. Cree una solicitud HTTPS a su punto de conexión de destino usando Microsoft Windows HTTP Services (WinHTTP) y los valores del token XSTS y de la firma.
   Todas las llamadas HTTPS deben realizarse a través de la API de WinHTTP, agregando el valor del token XSTS al encabezado `Authentication` y el valor de la firma como encabezado `Signature`.

Para los servicios TCP/UDP seguros, se usa el mismo flujo con los siguientes cambios.

* En lugar de la URL de la llamada de servicio, el título especifica el URI de marcador de posición del servicio.
* Los datos de autenticación se usan durante la autorización/protocolo de enlace inicial de la conexión TCP/UDP.

## Manejo de tokens XSTS de asociado en el servidor

Después de que un servicio de título reciba el token XSTS de asociado, el servicio debe analizar, descifrar y validar la autenticidad del token.
Para obtener detalles sobre el análisis y la validación de un token XSTS, consulte [Tokens de seguridad de los servicios de XBOX (tokens XSTS)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens).

También se recomienda encarecidamente a los desarrolladores de servicios usar el [ejemplo Game Service](https://aka.ms/xgdsamples) y la [presentación de Xfest 2019 XSTS Auth and Server to Server Made Easy](https://forums.xboxlive.com/articles/96129/xfest-online-2019-archive.html) para su revisión y pruebas.
El ejemplo incluye una biblioteca de servicio completa con manejo de tokens.

### Autenticación y autorización

Después de analizar, descifrar y verificar un token, el servicio puede confiar en las notificaciones del token.
Para obtener una lista de todas las notificaciones del token XSTS, consulte [Notificaciones de tokens de seguridad de los servicios de XBOX](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-token-claims).
El servicio debe usar primero estas notificaciones para la autenticación y autorización a nivel de servicio.
La información contenida en un token XSTS de asociado siempre debe considerarse autoritativa.
Las llamadas de servicio no necesitan replicar esta información en otras partes de la solicitud.

Debe prestarse especial atención a la identidad del usuario. Siempre debe validarse mediante una notificación del token XSTS y no debe usarse sin validación desde otras fuentes para la solicitud de servicio. Para identificar a un usuario con fines de autenticación, un servicio de título tiene dos opciones.

* La notificación **/user/pXUID (ptx)**.
  Para cualquier escenario que solo requiera una identidad para la vinculación de cuentas, debe usarse el XUID de asociado (pXUID). Esta notificación expone un identificador único de la cuenta de los servicios de XBOX del usuario bajo el publicador actual.
* La notificación **/user/XID**.
  Para cualquier escenario que requiera que un servicio devuelva la identidad del usuario o realice llamadas de servicio a servicio a los servicios de XBOX, se necesita el XUID de un usuario. Ejemplos de tales servicios son los servicios personalizados de tablas de clasificación o de emparejamiento, o los servicios que validan compras mediante llamadas a los servicios de XBOX.

Los servicios de título deben estar autorizados para habilitar el XUID en el token XSTS de asociado y almacenar información de XUID. Trabaje con su Developer Partner Manager para completar ese proceso. Sin embargo, el uso del pXUID no requiere revisiones de seguridad ni permisos adicionales.

Aunque el gamertag está disponible en las notificaciones del token, nunca debe usarse como identificador único de un usuario. El gamertag puede cambiar y, por lo tanto, solo puede usarse con fines temporales de visualización o almacenamiento en caché.

Con fines de autorización, puede obtener los privilegios de los servicios de XBOX de un usuario mediante la notificación */user/privileges*. Estos privilegios son idénticos a los privilegios expuestos en los servicios de XBOX y deben verificarse para el acceso al servicio.  Si un usuario no tiene derechos de acceso suficientes, el servicio debe proporcionar un código de error HTTP/401.

Después de validar la identidad y los privilegios del usuario, los servicios pueden usar notificaciones adicionales del token de asociado para recuperar más información sobre el usuario y el dispositivo para la lógica del servicio.

<Note>Los PXUID tienen como ámbito el socio comercial (Business Partner) seleccionado al crear el usuario de confianza en el Partner Center. Si trabaja con x-tokens para más de un usuario de confianza, estos deben compartir el mismo socio comercial para que los valores de PXUID coincidan. Para obtener más información sobre la configuración del socio comercial y el usuario de confianza, consulte [Configuración de servicios web en el Partner Center](/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/web-services/live-web-services).</Note>

### Expiración y actualización del token

Un token XSTS es válido durante un período específico configurado en el usuario de confianza correspondiente en el Partner Center.
El tiempo de expiración predeterminado de un token XSTS es de cuatro horas.
Cada token contiene una marca de tiempo que el servicio debe verificar antes de aceptar las notificaciones del token.
Si se presenta un token expirado al servicio personalizado, el servicio debe devolver un error HTTP/401.

Dado que [XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureutf16async) en el cliente administra la expiración y el almacenamiento en caché de los tokens XSTS, debe llamarse cada vez antes de enviar una solicitud a los servicios del juego.
La API garantiza que el título siempre reciba un token válido.
Por lo demás, un título no debe almacenar tokens en caché.


## Related topics

- [Autenticación de los servicios de XBOX (contenido)](/es/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-service-authentication-nav.md)
- [XR-013 Vinculación de cuentas de Microsoft con cuentas del publicador](/es/publishing/certification/xr/xr-013.md)
- [Autenticación de servicios](/es/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/index.md)
- [Llamadas de servicio a los servicios XBOX](/es/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/live-s2s-calls-nav.md)
- [Integración de PlayFab para títulos de los servicios XBOX](/es/services/xbox-services/playfab-integration.md)
