# OAuth2

La autenticación OAuth2 se configura en `config/authentication.yaml`. Chamilo incluye soporte integrado para Azure AD, Keycloak, Facebook y cualquier proveedor genérico compatible con OAuth2.

## Paso 1 — Registrar Chamilo en su proveedor de identidad

Cree una aplicación en el panel de administración de su proveedor y establezca la **URI de redirección** a:

```
https://su-url-de-chamilo/connect/<proveedor>/check
```

Donde `<proveedor>` es `azure`, `keycloak`, `facebook` o el nombre que le dé a un proveedor genérico. Anote el **ID de Cliente** y el **Secreto de Cliente**.

## Paso 2 — Configurar authentication.yaml

Habilite el proveedor y proporcione sus credenciales. Todos los proveedores comparten estas claves comunes:

| Clave                    | Descripción                                                               |
| ------------------------ | ------------------------------------------------------------------------- |
| `enabled`                | `true` para activar                                                       |
| `title`                  | Etiqueta mostrada en el botón de inicio de sesión                         |
| `client_id`              | De su proveedor de identidad                                              |
| `client_secret`          | De su proveedor de identidad                                              |
| `allow_create_new_users` | Crear automáticamente una cuenta en Chamilo en el primer inicio de sesión |
| `allow_update_user_info` | Sincronizar datos del usuario en cada inicio de sesión                    |
| `force_as_login_method`  | Deshabilitar otros métodos y forzar este                                  |

### Azure AD (Microsoft Entra ID)

```yaml
authentication:
  1:
    oauth2:
      azure:
        enabled: true
        title: "Iniciar sesión con Microsoft"
        client_id: "<application-client-id>"
        client_secret: "<client-secret>"
        tenant: "<tenant-id>"
        url_login: "https://login.microsoftonline.com"
        path_authorize: "/<tenant-id>/oauth2/v2.0/authorize"
        path_token: "/<tenant-id>/oauth2/v2.0/token"
        url_api: "https://graph.microsoft.com"
        allow_create_new_users: true
        allow_update_user_info: true
```

Azure también admite la asignación de roles basada en grupos (mapeo de IDs de grupos de Azure a roles de Chamilo como profesor o administrador), comandos de sincronización delta de usuarios y autenticación por certificado en lugar de un secreto de cliente. Consulte la [wiki](https://github.com/chamilo/chamilo-lms/wiki/External-Authentication-configuration) para conocer esas opciones.

### Keycloak

```yaml
authentication:
  1:
    oauth2:
      keycloak:
        enabled: true
        title: "Iniciar sesión con Keycloak"
        client_id: "<client-id>"
        client_secret: "<client-secret>"
        auth_server_url: "https://keycloak.yourorg.com"
        realm: "your-realm"
        allow_create_new_users: true
```

### Facebook

```yaml
authentication:
  1:
    oauth2:
      facebook:
        enabled: true
        title: "Iniciar sesión con Facebook"
        client_id: "<app-id>"
        client_secret: "<app-secret>"
        graph_api_version: "v20.0"
        allow_create_new_users: true
```

### OAuth2 Genérico

Use esto para Google, GitLab o cualquier proveedor compatible con OAuth2:

```yaml
authentication:
  1:
    oauth2:
      myprovider:
        enabled: true
        title: "Iniciar sesión con MyProvider"
        client_id: "<client-id>"
        client_secret: "<client-secret>"
        urlAuthorize: "https://provider.example.com/oauth/authorize"
        urlAccessToken: "https://provider.example.com/oauth/token"
        urlResourceOwnerDetails: "https://provider.example.com/api/user"
        scopes: ["openid", "email", "profile"]
        allow_create_new_users: true
```

El mapeo de campos (cómo los atributos del proveedor se asignan a `firstname`, `lastname`, `email`, etc. de Chamilo) y el mapeo de roles también son configurables. Consulte la [wiki](https://github.com/chamilo/chamilo-lms/wiki/External-Authentication-configuration) para obtener la lista completa de claves de mapeo.

## Paso 3 — Limpiar caché y probar

```bash
php bin/console cache:clear && php bin/console cache:warmup
```

Cierre sesión en Chamilo. El botón del proveedor configurado debería aparecer en la página de inicio de sesión. Pruebe con una cuenta dedicada antes de implementarlo para todos los usuarios.

## Consejos

* Mantenga habilitado el formulario de inicio de sesión estándar para que los administradores siempre puedan iniciar sesión si hay problemas con OAuth2.
* Al usar Azure con usuarios existentes, configure `existing_user_verification_order` para controlar cómo Chamilo relaciona a los usuarios entrantes con cuentas existentes.
* La asignación de roles por defecto es estudiante; use el mapeo de grupos para promover automáticamente a los usuarios a roles de profesor o administrador.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chamilo.org/2.x-es/guia-de-administracion/admin-guide/authentication/oauth2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
