---
title: Autenticación
slug: develop/es/autenticacion
docTags: 
createdAt: 2025-03-11T07:03:28.938Z
---

El servidor de autenticación de BrightSign admite Single Sign-On (SSO), Multi-Factor Authentication (MFA) y otros protocolos estándar como OpenID Connect, OAuth 2.0 y SAML.

Hemos implementado el “*Flujo de credenciales de cliente*” de OAuth2 para permitir que los clientes *autogestionen* sus credenciales (Client ID y Secret) y para permitir un control más granular sobre lo que los tokens resultantes pueden hacer, mejorando la seguridad.

Las Client Credentials se utilizan cuando los clientes (aplicaciones y servicios) desean obtener acceso en su propio nombre en lugar de en nombre de un usuario. Por ejemplo, estas credenciales pueden ser útiles para servicios en segundo plano que aplican cambios al sistema en general en lugar de hacerlo para un usuario específico.

# Flujo de trabajo de la API

Este documento describe los pasos necesarios para usar nuestras APIs junto con ejemplos de código.

## Crear Client Credentials

Para crear nuevas credenciales de cliente:

1\. Inicie sesión en BrightSign Control en *control.bsn.cloud*.

2\. <font color="hsl(var(--ab-gray-900))">Seleccione una de sus redes</font>. Tenga en cuenta que la lista de funciones disponibles para sus aplicaciones depende de su nivel de acceso en la red seleccionada.

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/Nu6ClWhaNe9Xsm372H2ws-20251008-165412.png)

3. Una vez seleccionada la red, ingresará a la pantalla Home. Vaya a **Administración > Aplicaciones** y seleccione **Agregar aplicación.**

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/PH5Mtha21LCVdjnBfh0Ru_screenshot-2026-07-29-at-80111-am.png)

5\. Introduzca un nombre y una descripción para la aplicación, y seleccione las funciones a las que su aplicación necesita acceder. De acuerdo con las mejores prácticas de seguridad, debe seleccionar únicamente las funciones que correspondan a los métodos de BrightSign Cloud API que la aplicación relacionada realmente utiliza. Para obtener información sobre qué scopes se requieren para cada llamada a la API, consulte la documentación de [Acceso a funciones](docId\:uu_ZUpqKQuF54Rpi79xl1) y [API de BSN.Cloud](docId\:hTJt91tjlkYM96cdoxsDS).&#x20;

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/Nac-N5SGKr7zyYZZMJuRG_screenshot-2026-07-29-at-83251-am.png)

6\. Haga clic en el botón **Guardar&#x20;**. Se mostrarán el nuevo Client ID y Secret.

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/ZqbFRst4WHIGGT4wKzycD_2026-07-29-08-11-35.png)

7\. Copie estos valores y almacénelos de forma segura, idealmente en un administrador de contraseñas. No volverán a mostrarse después de salir de esta pantalla.

:::hint{type="warning"}
Los secretos expiran cada 180 días. Debe rotarlos en la fecha de expiración o antes.
:::

**Notas**

- Se pueden crear múltiples aplicaciones
- El nombre, la descripción y las funciones permitidas de la aplicación pueden editarse o eliminarse
- Los secretos pueden rotarse (consulte más abajo).

## Obtener token de acceso

Para realizar cualquier llamada a la API de BrightSign Cloud, se debe obtener un token de acceso desde el endpoint de token: *https\://auth.bsn.cloud/realms/bsncloud/protocol/openid-connect/token.&#x20;*&#x54;enga en cuenta que, de acuerdo con [RFC6749 Section 4.4.2](https://www.rfc-editor.org/rfc/rfc6749#section-4.4.2), las credenciales de cliente emitidas deben proporcionarse utilizando el esquema de autenticación "Basic" en formato Base64 (como en los ejemplos a continuación).

**HTTP - Obtener token de acceso**

```none
POST https://auth.bsn.cloud/realms/bsncloud/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic [base64-encoded-clientId-and-secret]
Accept: application/json

grant_type=client_credentials
```

**TypeScript - Obtener token de acceso**

```typescript
const clientId = '[clientId]';
const clientSecret = '[clientSecret]';
const clientCredentials = Buffer.from(`${clientId}:${clientSecret}`).toString('base64');

const request = formBody({
	grant_type: 'client_credentials'
}).toString();

const headers = {
	'Content-Type': 'application/x-www-form-urlencoded',
	'Authorization': `Basic ${client_credentials}`,
	'Accept': "application/json",
};

const response = await axios.post(`https://auth.bsn.cloud/realms/bsncloud/protocol/openid-connect/token`, request, { headers });
return response.data as { accessToken: string };
```

**Códigos de respuesta esperados**

| **Código**                         | **Descripción**                                                      |
| ---------------------------------- | -------------------------------------------------------------------- |
| <font color="#9a0808">`200`</font> | <font color="#9a0808">Correcto</font>                                |
| <font color="#089a4d">`401`</font> | <font color="#089a4d">No autorizado - Credenciales no válidas</font> |

**Datos de respuesta destacables**

| **Propiedad**  | **Descripción**                                                            |
| -------------- | -------------------------------------------------------------------------- |
| `access_token` | Token de acceso que se utilizará con las llamadas API hasta su vencimiento |
| `expires_in`   | Tiempo hasta el vencimiento del token de acceso                            |
| `alcance`      | Scopes permitidos                                                          |

## Configurar red

Cada aplicación que registre tiene acceso a todas las redes de las que actualmente es miembro, por lo que cada vez que obtenga un token de acceso, el siguiente paso es seleccionar la red a la que desea acceder en el alcance de esta sesión. Para este propósito, necesita llamar al método "PUT /2022/06/REST/Self/Session/Network/", proporcionar el token de acceso emitido en el paso anterior y el nombre o identificador de la red seleccionada.

**HTTP - Seleccionar red por ID**

```none
PUT https://api.bsn.cloud/2022/06/REST/Self/Session/Network
Content-Type: application/json
Authorization: Bearer [accessToken]
Accept: application/json

{
  "id": [networkId]
}
```

**HTTP - Seleccionar red por nombre**

```none
PUT https://api.bsn.cloud/2022/06/REST/Self/Session/Network
Content-Type: application/json
Authorization: Bearer [accessToken]
Accept: application/json

{
  "name": "[networkName]"
}
```

**TypeScript - Seleccionar red por ID o nombre**

```typescript
const network = "[networkId|networkName]";

const body =
	isNumber(network) ? { id: network } :
	isString(network) ? { name: network } :
	network;

return await this.put(`2022/06/REST/Self/Session/Network`, body, ["vnd.bsn.error"]);
```

**Códigos de respuesta esperados**

| **Código**                         | **Descripción**                                                             |
| ---------------------------------- | --------------------------------------------------------------------------- |
| <font color="#089a4d">`204`</font> | <font color="#089a4d">OK - Sin contenido</font>                             |
| <font color="#9a0808">`400`</font> | <font color="#9a0808">Solicitud incorrecta - La red no existe</font>        |
| <font color="#9a0808">`401`</font> | <font color="#9a0808">No autorizado - El token de acceso ha expirado</font> |

## Usar la API

Una vez que se selecciona la red, la aplicación actual tiene acceso a todos sus recursos, pero está limitada por los permisos del usuario que la registró, así como por las funcionalidades seleccionadas durante el registro. Tenga en cuenta que cada vez que una aplicación emite un nuevo token de acceso, es necesario seleccionar nuevamente la red de destino. Si se cambian los permisos de un usuario que registró una aplicación determinada o si este usuario se elimina de la red de destino, los recursos disponibles para una aplicación determinada cambian en consecuencia.

Cuando se recibe un código de error `401`, esto indica que el token de acceso ha expirado. Entonces debe repetir el proceso anterior para obtener un nuevo token de acceso y configurar una red.

En algunos escenarios, podría resultar óptimo obtener un nuevo token de acceso antes de que expire. Puede utilizar el valor `expires_in` devuelto en la carga útil de obtener token de acceso para calcular el tiempo de expiración y obtener previamente un nuevo token con anticipación.

Si se recibe un código de error `403`, esto indica que su token de acceso no está autorizado para realizar esta solicitud y debe verificar que los alcances de la aplicación estén especificados correctamente.

**Códigos de respuesta esperados**

| **Código**                         | **Descripción**                                                                                         |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------- |
| <font color="#089a4d">`200`</font> | <font color="#089a4d">OK</font>                                                                         |
| <font color="#9a0808">`401`</font> | <font color="#9a0808">No autorizado - El token de acceso ha expirado</font>                             |
| <font color="#9a0808">`403`</font> | <font color="#9a0808">Prohibido - El token de acceso no tiene permiso para realizar la solicitud</font> |

# Rotación de secretos de cliente

Los secretos de cliente expiran cada 180 días. Los secretos pueden rotarse con más frecuencia para obtener seguridad adicional.

Puede rotar los secretos automáticamente mediante la API o manualmente mediante la interfaz de usuario.

Si se sospecha que un secreto está comprometido, debe rotarlo inmediatamente usando la opción **Rotar secreto** en la interfaz de usuario. La rotación devolverá un nuevo secreto inmediatamente; este debe almacenarse de forma segura. El secreto anterior continuará funcionando durante un tiempo limitado, pero debe cambiar su aplicación al nuevo secreto lo antes posible.

![](https://api.archbee.com/api/optimize/0prk6SO2dy9LdU77jB8D1/9DJmnORzg4m0qCsxVFBUY_image-20250213-141403.png)

**HTTP - Rotar secreto del cliente**

Para rotar el secreto del cliente mediante la API se proporciona el siguiente método. Reemplace \{id} con el ID de la aplicación, no el ID del cliente.

```none
POST https://api.bsn.cloud/2022/06/REST/Self/Applications/{id}/Secret/ 
Content-Type: application/json
Authorization: Bearer [accessToken]
Accept: application/json
```

**Códigos de respuesta esperados**

| **Código**                         | **Descripción**                                                                                                                       |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| <font color="#089a4d">`200`</font> | <font color="#15803D">Éxito: el secreto del cliente existente fue invalidado y se proporciona un nuevo secreto en la respuesta</font> |
| <font color="#9a0808">`401`</font> | <font color="#9a0808">No autorizado: el token de acceso ha expirado</font>                                                            |
| <font color="#9a0808">`403`</font> | <font color="#9a0808">Prohibido: el token de acceso no tiene permiso para realizar la solicitud</font>                                |

# Preguntas frecuentes

1. **¿Cómo obtengo un nuevo ID y secreto de cliente?**
   Necesitará usar BrightSign Control para crear una nueva aplicación y obtener un nuevo ID y secreto de cliente.
2. **¿Cómo sé qué scopes asignar a mi aplicación?**
   Para obtener información sobre qué scopes se requieren para cada llamada API, consulte la [documentación de la API de BSN.Cloud](docId\:hTJt91tjlkYM96cdoxsDS).
3. **¿Cuánto dura la vida útil del nuevo token de acceso?**
   5 minutos 30 segundos
4. **¿Cuánto dura la vida útil de la sesión de red?**
   24 horas
5. **¿Se admiten Refresh Tokens?**
   No, los refresh tokens no son compatibles con el OAuth2 “*Flujo de credenciales de cliente*”.
6. **¿Puedo seguir usando el antiguo endpoint del token de la API heredada con un nuevo ID y secreto de cliente?**
   Usted *NO* debe hacer esto. El endpoint del token de la API heredada dejó de funcionar el 23 de febrero de 2026.
7. **¿Qué sucede si sospecho que mi secreto de cliente ha sido comprometido?**
   Debe usar BrightSign Control para rotar el secreto y luego continuar usando el secreto anterior hasta que deje de funcionar; después, use el nuevo secreto.
8. **¿Existen otras formas de manejar un secreto de cliente comprometido?**
   Sí, simplemente puede eliminar la aplicación. Esto destruirá el ID y secreto de cliente existentes. Puede crear otra aplicación para obtener un nuevo ID y secreto de cliente.
9. **¿Los secretos de cliente expiran?**
   Sí, los secretos de cliente expiran cada 180 días. Debe rotarlos automática o manualmente antes o en la fecha de expiración.

# Información adicional

Para obtener más información, contacte con: [support@brightsign.biz](mailto\:support@brightsign.biz)



