# SCIM

**SCIM** (Sistema para Gerenciamento de Identidade entre Domínios) automatiza o provisionamento de usuários — criando, atualizando e desativando contas no Chamilo com base em alterações no seu provedor de identidade. Diferentemente do OAuth2 ou LDAP, o SCIM gerencia o provisionamento, não o login.

| Cenário                                | Ação do SCIM                          |
| -------------------------------------- | ------------------------------------- |
| Um novo funcionário ingressa           | Cria uma conta no Chamilo             |
| O nome ou cargo de um funcionário muda | Atualiza a conta no Chamilo           |
| Um funcionário sai                     | Desativa ou exclui a conta no Chamilo |

## Configuração

### 1. Definir o token SCIM

No seu arquivo `.env` (ou `.env.local`), defina um token aleatório seguro:

```
SCIM_TOKEN=your-secure-random-token
```

Esse token é usado pelo seu provedor de identidade para autenticar suas solicitações aos endpoints SCIM do Chamilo.

### 2. Habilitar o SCIM em authentication.yaml

```yaml
authentication:
  1:
    scim:
      main:
        enabled: true
        auth_source: platform
```

Limpe e aqueça o cache após a edição:

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

### 3. Configurar seu provedor de identidade

No seu provedor de identidade (Azure AD, Okta, etc.):

1. Adicione o Chamilo como uma aplicação SCIM
2. Defina a URL base do SCIM como `https://your-chamilo-url/scim/v2/`
3. Insira o token do passo 1 como o token de portador (bearer token)
4. Mapeie os atributos do provedor para os campos padrão do SCIM (userName, name.givenName, name.familyName, emails)
5. Habilite o provisionamento automático

## Endpoints SCIM

O Chamilo implementa o SCIM 2.0:

| Endpoint              | Método | Ação                  |
| --------------------- | ------ | --------------------- |
| `/scim/v2/Users`      | GET    | Listar usuários       |
| `/scim/v2/Users`      | POST   | Criar um usuário      |
| `/scim/v2/Users/{id}` | GET    | Obter um usuário      |
| `/scim/v2/Users/{id}` | PUT    | Substituir um usuário |
| `/scim/v2/Users/{id}` | PATCH  | Atualizar um usuário  |
| `/scim/v2/Users/{id}` | DELETE | Remover um usuário    |

## Dicas

* **Comece com um grupo de teste** — provisione um pequeno conjunto de usuários antes de habilitar o SCIM para toda a organização.
* **Combine com OAuth2** — uma configuração comum utiliza o Azure AD OAuth2 para login e o Azure AD SCIM para provisionamento.
* **Monitore os logs** — verifique tanto os logs do Chamilo (`var/log/`) quanto os logs de provisionamento do seu provedor de identidade para identificar erros.


---

# 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-pt/guia-de-administracao/admin-guide/authentication/scim.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.
