> For the complete documentation index, see [llms.txt](https://docs.griaule.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.griaule.com/gbs/es/aplicaciones/gbs-auth.md).

# GBS Auth

## 1. Visión general

El **GBS Auth** es una aplicación web de gestión de autenticación y autorización basada en OIDC (OpenID Connect). La herramienta actúa como broker de autenticación para proveedores de identidad externos (p. ej., Google Workspace, Gov.br), emite sus propios tokens de acceso y proporciona un panel administrativo para la gestión de usuarios, funciones (roles), permisos y auditoría.

Esta guía cubre la **utilización de la aplicación GBS Auth** — las pantallas de gestión de funciones, usuarios y auditoría. Puede ayudarlo con:

* Entender qué muestra cada pantalla y qué acciones están disponibles
* Crear y gestionar funciones (roles) y permisos
* Crear y gestionar usuarios e identificadores externos
* Asignar funciones a usuarios
* Consultar el historial de auditoría

## 2. Inicio de sesión

GBS Auth utiliza autenticación mediante OpenID Connect integrada con el Proveedor de Identidad (IdP). El flujo de inicio de sesión es:

{% stepper %}
{% step %}

#### Acceda a GBS Auth

Acceda a la URL de GBS Auth en el navegador.
{% endstep %}

{% step %}

#### Inicie sesión

Se le redirigirá a la pantalla de inicio de sesión del proveedor de identidad configurado.

Ingrese sus credenciales (usuario y contraseña).
{% endstep %}

{% step %}

#### Vuelva a GBS Auth

Después de la autenticación, será redirigido de vuelta a GBS Auth.

Sus iniciales y nombre aparecen en la esquina superior derecha de la pantalla.
{% endstep %}
{% endstepper %}

Para cerrar sesión, haga clic en su nombre en la esquina superior derecha y seleccione **Cerrar sesión**.

### 2.1. Si el inicio de sesión falla

| Lo que ve                                                                  | Lo que significa                                       | Qué hacer                                                                                  |
| -------------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
| La pantalla de inicio de sesión del IdP no carga                           | El IdP no está accesible                               | Verifique su conexión de red e inténtelo de nuevo. Si persiste, contacte al soporte.       |
| Credenciales inválidas                                                     | Usuario o contraseña incorrectos                       | Verifique sus credenciales. Use "Olvidé mi contraseña" si está disponible en el IdP.       |
| "Completando inicio de sesión..." sigue cargando                           | Falló el callback de OAuth                             | Haga clic en "Intentar de nuevo". Si persiste, borre las cookies y la caché del navegador. |
| Mensaje de error con ícono de triángulo amarillo                           | Falló el intercambio de tokens o coincidencia de state | Haga clic en "Intentar de nuevo". Si persiste, borre sessionStorage e inténtelo de nuevo.  |
| Pantallas vacías o elementos de menú ausentes después del inicio de sesión | No tiene permisos asignados                            | Contacte al administrador para verificar sus funciones y permisos.                         |

## 3. Navegación

La barra lateral izquierda contiene el menú principal de navegación. Los elementos disponibles dependen de sus permisos:

| Elemento del menú | Ícono               | Permiso necesario      | Descripción                |
| ----------------- | ------------------- | ---------------------- | -------------------------- |
| **Panel**         | Diseño (cuadrícula) | Ninguno                | Visión general del sistema |
| **Funciones**     | Escudo              | `auth:roles:write`     | Gestión de funciones       |
| **Usuarios**      | Personas            | Ninguno                | Gestión de usuarios        |
| **Auditoría**     | Documento           | `auth:audit-logs:read` | Historial de auditoría     |

El menú puede colapsarse haciendo clic en el botón de colapso en la parte inferior de la barra lateral, mostrando solo los íconos para ganar más espacio de trabajo. Cuando está colapsado, el nombre de cada elemento aparece como *tooltip* al pasar el mouse.

## 4. Panel

La pantalla inicial muestra tres tarjetas con contadores:

| Tarjeta                | Información                      | Acción                           |
| ---------------------- | -------------------------------- | -------------------------------- |
| **Total de funciones** | Cantidad de funciones definidas  | Enlace "Ver todas las funciones" |
| **Total de permisos**  | Cantidad de permisos disponibles | Enlace "Ver funciones"           |
| **Usuarios**           | Cantidad de usuarios registrados | Enlace "Gestionar usuarios"      |

Los contadores se cargan automáticamente al acceder a la pantalla.

## 5. Funciones

### 5.1. Lista de funciones

La pantalla muestra una cuadrícula de tarjetas, cada una representando una función:

* **Nombre** de la función
* **Descripción** breve
* **Cantidad de permisos** (insignia gris)
* **Botones de acción**: Permisos, Editar, Copiar, Eliminar

Use el campo de búsqueda en la parte superior para filtrar funciones por nombre o descripción.

**Estado vacío:** Si no hay funciones, la pantalla muestra "No se encontró ninguna función" con un botón "Cree su primera función".

### 5.2. Creando una función

{% stepper %}
{% step %}

#### Inicie la creación

Haga clic en el botón **Crear función**.
{% endstep %}

{% step %}

#### Complete los datos de la función

Complete el **Nombre** de la función, por ejemplo: `admin`, `operator`, `viewer`.

Complete la **Descripción**, por ejemplo: "Administrador del sistema con acceso total".
{% endstep %}

{% step %}

#### Seleccione los permisos

En la sección **Permisos**, marque los permisos deseados.

* Use el campo de búsqueda para filtrar permisos por nombre o descripción.
* El contador "X de Y seleccionadas" muestra cuántos permisos han sido marcados.
  {% endstep %}

{% step %}

#### Cree la función

Haga clic en **Crear**.
{% endstep %}
{% endstepper %}

### 5.3. Editando una función

{% stepper %}
{% step %}

#### Abra la edición

En la lista, haga clic en el botón de **editar** (ícono de lápiz) en la función deseada.
{% endstep %}

{% step %}

#### Actualice la función

El nombre de la función **no puede ser modificado** después de la creación.

Cambie la descripción según sea necesario.

Agregue o elimine permisos en la sección de permisos.
{% endstep %}

{% step %}

#### Guarde los cambios

Haga clic en **Guardar**.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Al editar una función, los cambios afectan a todos los usuarios que tengan esa función asignada.
{% endhint %}

### 5.4. Copiando una función

{% stepper %}
{% step %}

#### Inicie la copia

En la lista, haga clic en el botón de **copiar** (ícono de copia) en la función deseada.
{% endstep %}

{% step %}

#### Ajuste los datos

Se abre un formulario de creación con la descripción y los permisos de la función original.

Defina un **nuevo nombre** para la función.

Ajuste la descripción y los permisos según sea necesario.
{% endstep %}

{% step %}

#### Cree la copia

Haga clic en **Crear**.
{% endstep %}
{% endstepper %}

### 5.5. Eliminando una función

{% stepper %}
{% step %}

#### Inicie la eliminación

En la lista, haga clic en el botón de **eliminar** (ícono de papelera, rojo) en la función deseada.
{% endstep %}

{% step %}

#### Confirme la eliminación

Se mostrará una ventana de confirmación con el nombre de la función.

Haga clic en **Eliminar** para confirmar, o **Cancelar** para cancelar.
{% endstep %}
{% endstepper %}

## 6. Usuarios

### 6.1. Lista de usuarios

La pantalla muestra una cuadrícula de tarjetas, cada una representando un usuario:

* **Nombre** del usuario
* **Correo electrónico**
* **Cantidad de funciones** asignadas (insignia gris)
* **Botones de acción**: Funciones, Editar, Eliminar

Use el campo de búsqueda en la parte superior para filtrar usuarios por nombre o correo electrónico.

La lista está paginada (20 elementos por página). Use los botones de navegación en el pie para cambiar de página.

**Estado vacío:** Si no hay usuarios, la pantalla muestra "No se encontró ningún usuario" con un botón "Cree su primer usuario".

### 6.2. Creando un usuario

{% stepper %}
{% step %}

#### Inicie la creación

Haga clic en el botón **Crear usuario**.
{% endstep %}

{% step %}

#### Complete los datos del usuario

Complete el **Nombre**, por ejemplo: "João Silva".

Complete el **Correo electrónico**, por ejemplo: "<joao@exemplo.com>".
{% endstep %}

{% step %}

#### Agregue identificadores externos, si es necesario

Opcionalmente, agregue **Identificadores externos**:

* Haga clic en **Agregar identificador**.
* Seleccione la **Clave de claim** en el menú desplegable, por ejemplo: `cpf`, `titulo`.
* Complete el **Valor de claim**, por ejemplo: "12345678900".
* Repita para agregar más identificadores.
  {% endstep %}

{% step %}

#### Cree el usuario

Haga clic en **Crear**.
{% endstep %}
{% endstepper %}

### 6.3. Editando un usuario

{% stepper %}
{% step %}

#### Abra la edición

En la lista, haga clic en el botón de **editar** (ícono de lápiz) en el usuario deseado.
{% endstep %}

{% step %}

#### Actualice los datos

Cambie el nombre y/o el correo electrónico según sea necesario.
{% endstep %}

{% step %}

#### Administre los identificadores externos

En la sección **Identificadores externos**:

* Para **agregar**: haga clic en "Agregar identificador", complete la clave y el valor del claim.
* Para **eliminar**: haga clic en el ícono de papelera junto al identificador. Quedará con texto tachado y opacidad reducida.
* Para **deshacer eliminación**: haga clic en "Deshacer" en el identificador marcado para eliminación.
  {% endstep %}

{% step %}

## Guarde los cambios

Haga clic en **Guardar**.
{% endstep %}
{% endstepper %}

### 6.4. Asignando funciones a un usuario

{% stepper %}
{% step %}

#### Abra la asignación de funciones

En la lista de usuarios, haga clic en el botón **Funciones** (ícono de escudo) en el usuario deseado.
{% endstep %}

{% step %}

#### Seleccione las funciones

La pantalla muestra la tarjeta del usuario — nombre, correo electrónico y avatar con iniciales — y la lista de funciones disponibles.

Marque o desmarque las funciones deseadas usando las casillas de selección.

* Use el campo de búsqueda para filtrar funciones por nombre o descripción.
* El contador "X / total" muestra cuántas funciones están seleccionadas.
  {% endstep %}

{% step %}

#### Guarde los cambios

Haga clic en **Guardar cambios** — el botón muestra la cantidad de cambios.

El botón solo se habilita si hay cambios con respecto al estado original.
{% endstep %}
{% endstepper %}

### 6.5. Eliminando un usuario

{% stepper %}
{% step %}

#### Inicie la eliminación

En la lista, haga clic en el botón de **eliminar** (ícono de papelera, rojo) en el usuario deseado.
{% endstep %}

{% step %}

#### Confirme la eliminación

Se mostrará una ventana de confirmación con el nombre del usuario.

Haga clic en **Eliminar** para confirmar, o **Cancelar** para cancelar.
{% endstep %}
{% endstepper %}

## 7. Auditoría

La pantalla de auditoría muestra el historial completo de todos los cambios realizados en el sistema.

### 7.1. Cómo usar

{% stepper %}
{% step %}

#### Acceda a la pantalla de auditoría

Al acceder a la pantalla, verá el mensaje "Haga clic en Buscar para cargar los registros".
{% endstep %}

{% step %}

#### Cargue los registros

Haga clic en el botón **Buscar** para cargar los registros.
{% endstep %}

{% step %}

#### Aplique filtros, si es necesario

Opcionalmente, aplique filtros antes de buscar.
{% endstep %}
{% endstepper %}

### 7.2. Filtros disponibles

Haga clic en **Filtros** para expandir el panel de filtros. Una *insignia* muestra la cantidad de filtros activos.

| Filtro              | Descripción                     | Ejemplo                                                        |
| ------------------- | ------------------------------- | -------------------------------------------------------------- |
| **Tipo de evento**  | Tipo de evento                  | CREATED, UPDATED, DELETED, ASSIGNED, REMOVED, REVOKED          |
| **Tipo de entidad** | Tipo de entidad                 | USER, ROLE, USER\_ROLE, ROLE\_PERMISSION, EXTERNAL\_IDENTIFIER |
| **ID de entidad**   | ID de la entidad afectada       | UUID o nombre                                                  |
| **UUID del actor**  | UUID de quien realizó la acción | UUID del usuario                                               |
| **Fecha desde**     | Inicio del período              | Selector de fecha                                              |
| **Fecha hasta**     | Fin del período                 | Selector de fecha                                              |

Haga clic en **Aplicar** para buscar con los filtros. Haga clic en **Limpiar** para limpiar todos los filtros.

### 7.3. Información mostrada

Cada entrada de auditoría muestra:

| Columna              | Descripción                                                    |
| -------------------- | -------------------------------------------------------------- |
| **Fecha**            | Fecha y hora de la acción                                      |
| **Evento**           | Insignia coloreada con el tipo de evento                       |
| **Entidad**          | Tipo de entidad afectada                                       |
| **ID de la entidad** | Identificador de la entidad (fuente monoespaciada)             |
| **UUID del actor**   | Quién realizó la acción (o "System" para acciones automáticas) |

### 7.4. Colores de los eventos

| Evento   | Color         |
| -------- | ------------- |
| CREATED  | Verde         |
| UPDATED  | Azul          |
| DELETED  | Rojo          |
| ASSIGNED | Azul primario |
| REMOVED  | Ámbar         |
| REVOKED  | Rojo          |

### 7.5. Detalles expandibles

<details>

<summary>Ver detalles de una entrada de auditoría</summary>

Haga clic en la flecha a la izquierda de una entrada para expandirla y ver detalles adicionales en formato clave-valor, como nombres antiguos/nuevos y permisos afectados.

</details>

### 7.6. Paginación

Use los botones de navegación en el pie para cambiar de página. Se muestran el total de resultados y el rango actual.

## 8. Idioma

GBS Auth está disponible en **Portugués (Brasil)** y **Inglés**.

{% stepper %}
{% step %}

#### Abra el menú del usuario

Haga clic en su nombre/avatar en la esquina superior derecha.
{% endstep %}

{% step %}

#### Seleccione el idioma

En el menú desplegable, en la sección **Idioma**, seleccione el idioma deseado.
{% endstep %}

{% step %}

#### Confirme la actualización

El idioma actual está marcado con un ícono de verificación.

La interfaz se actualiza inmediatamente — no es necesario recargar la página.
{% endstep %}
{% endstepper %}

## 9. Mensajes comunes

### 9.1. Mensajes de éxito

<table data-search="false"><thead><tr><th>Mensaje</th><th>Contexto</th></tr></thead><tbody><tr><td>Función creada con éxito</td><td>Función creada con éxito</td></tr><tr><td>Función actualizada con éxito</td><td>Función actualizada con éxito</td></tr><tr><td>Función eliminada con éxito</td><td>Función eliminada con éxito</td></tr><tr><td>Usuario creado con éxito</td><td>Usuario creado con éxito</td></tr><tr><td>Usuario actualizado con éxito</td><td>Usuario actualizado con éxito</td></tr><tr><td>Usuario eliminado con éxito</td><td>Usuario eliminado con éxito</td></tr><tr><td>Roles del usuario actualizados con éxito</td><td>Roles del usuario actualizados</td></tr></tbody></table>

### 9.2. Mensajes de error

| Mensaje                                             | Significado                                 | Qué hacer                                                    |
| --------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------ |
| No se pudieron cargar los roles                     | No se pudo cargar la lista de roles         | Verifique la conexión e intente actualizar la página         |
| No se pudieron cargar los usuarios                  | No se pudo cargar la lista de usuarios      | Verifique la conexión e intente actualizar la página         |
| No se pudo eliminar el rol                          | Falló la eliminación del rol                | Inténtelo de nuevo. Si persiste, contacte con soporte        |
| No se pudo eliminar el usuario                      | Falló la eliminación del usuario            | Inténtelo de nuevo. Si persiste, contacte con soporte        |
| Rol no encontrado                                   | El rol ya no existe                         | Actualice la lista de roles                                  |
| Usuario no encontrado                               | El usuario ya no existe                     | Actualice la lista de usuarios                               |
| Ya existe (409)                                     | Intento de crear un elemento duplicado      | Use un nombre/identificador diferente                        |
| Ya asignado (409)                                   | Rol o permiso ya asignado                   | El elemento ya está asignado — no se requiere ninguna acción |
| Sesión expirada                                     | Su sesión ha expirado                       | Inicie sesión nuevamente                                     |
| El nombre del rol es obligatorio                    | Campo nombre del rol vacío                  | Complete el nombre del rol                                   |
| La descripción es obligatoria                       | Campo descripción vacío                     | Complete la descripción                                      |
| El nombre es obligatorio                            | Campo nombre del usuario vacío              | Complete el nombre del usuario                               |
| El correo electrónico es obligatorio                | Campo correo electrónico vacío              | Complete el correo electrónico                               |
| Todos los campos del identificador son obligatorios | Campos de identificador externo incompletos | Complete todos los campos del identificador                  |

### 9.3. Estados vacíos

| Mensaje                                                    | Contexto                                                       |
| ---------------------------------------------------------- | -------------------------------------------------------------- |
| No se encontraron roles                                    | No hay roles registrados o no hay resultados para el filtro    |
| No se encontraron usuarios                                 | No hay usuarios registrados o no hay resultados para el filtro |
| No se encontraron registros de auditoría                   | No hay registros de auditoría para los filtros aplicados       |
| Haga clic en Buscar para cargar los registros de auditoría | Pantalla de auditoría antes de la primera búsqueda             |
| No se encontraron permisos                                 | Ningún permiso coincide con el filtro                          |
| No se encontraron roles que coincidan con su consulta      | Ningún rol coincide con el filtro en la pantalla de asignación |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.griaule.com/gbs/es/aplicaciones/gbs-auth.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
