# Manual de Usuário do LDAP

## Introdução

**LDAP** (Lightweight Directory Access Protocol) é um protocolo padrão utilizado para acessar e gerenciar informações armazenadas em serviços de diretório, como o *Active Directory* da Microsoft, o *OpenLDAP* dentre outros. Ele é frequentemente usado para centralizar informações de usuários, grupos e recursos em uma rede, como em sistemas de autenticação, diretórios de contatos e sistemas de gerenciamento de acesso.

{% hint style="info" %}
Este manual cobre o uso do LDAP com a ferramenta [Apache Directory Studio](https://directory.apache.org/studio/).
{% endhint %}

![](/files/cLO7TWQqNjyVAcXIwxl0)

## Iniciando o uso

### Criando uma conexão

Pelo menu File -> New será aberto o *Wizard*, escolher LDAP Browser -> LDAP Connection. Ou, na janela de conexões, com o botão direito escolher New Connection.

Preencher somente o `Nome da conexão` (*Connection name*) e o `Hostname` (ou IP) e avançar para a próxima tela.

![](/files/y4gyvMQSsG8Bd5hFrVaV)

Preencher o campo `Bind DN or User` e `Bind password` conforme informado pela equipe que criou o LDAP. Após configurado é possível clicar em Check Authentication para confirmar o acesso e login no LDAP.

![](/files/1iGUmfZiV5ajQVCRh6ip)

{% hint style="success" %}
**(Opcional)** Na próxima tela, *Browser Option*, marcar `Fetch operational attributes while browsing` para melhorar a visibilidade dos grupos que cada usuário pertence.
{% endhint %}

### Conectando pela aba de Connections

Verifique qual servidor da lista deseja conectar, dê um duplo clique no servidor escolhido ou selecione-o e clique no ícone de conexão (destacado em vermelho na imagem abaixo).

![](/files/1psiB9PtwLVfsPZJuR6Y)

Se a conexão for bem sucedida, o ícone do servidor mudará para amarelo:

![](/files/r3GafboHSg2380DRWuaC)

## Estrutura do LDAP

### Árvore de diretórios

A árvore utilizada baseia-se essencialmente em *Groups* e *Users*, podendo adicionalmente contar com *Policies* para políticas de senha.

![](/files/42r8SXPjJABWDTtgZJyN)

### Siglas

<table><thead><tr><th width="200">Sigla</th><th>Significado</th></tr></thead><tbody><tr><td><code>dc</code></td><td>Componentes do domínio (Domain Component)</td></tr><tr><td><code>ou</code></td><td>Unidade organizacional à qual o usuário pertence (Organizational Unit)</td></tr><tr><td><code>cn</code></td><td>Nome comum (Common Name)</td></tr><tr><td><code>sn</code></td><td>Nome da pessoa (Surname)</td></tr><tr><td><code>uid</code></td><td>ID de usuário (User ID)</td></tr><tr><td><code>mail</code></td><td>e-mail (Email Address)</td></tr></tbody></table>

### Árvore *Users*

Nesta árvore são criados os usuários e definidas suas senhas, pode ser estruturada em subníveis para facilitar a organização dos usuários mediante conceito de agrupamento por localidade, departamento, etc.

### Árvore *Groups*

Nesta árvore são definidos grupos que representarão permissões / roles de acesso às ferramentas, mediante adição do usuário ao grupo de acesso desejado.

Exemplo de grupos:

* `etr_view` - Usuários adicionados a este grupo terão acesso às permissões definidas no grupo, que representam opções de acesso ao ETR como visualizador.
* `bcc_verify` - Usuários adicionados a este grupo poderão logar no BCC e realizar pesquisas de verificação (pesquisas 1:1).

### Cadastro de usuário

Na criação de usuário, preencher os seguintes atributos:

`cn` - usado como o nome do **login** do usuário; `sn` - usado para registar o **nome completo** do usuário; `uid` - reservado para uso futuro, devendo ser preenchido com o mesmo texto que o `cn`; `password` - preenchido com a **senha** deste usuário; `mail` - usado para registar o **e-mail** do usuário.

Para cadastrar um usuário, clique com botão direito em cima de `ou=User` e escolha New -> New Entry:

![](/files/aUAIcxDE8a4QloKBO30e)

Será aberta a tela de criação de usuário. Caso existam `ou` intermediárias, altere o caminho no diretório de criação. Caso contrário, se nenhuma alteração for realizada, o usuário será criado na raiz do diretório *Users*.

![](/files/xxfh5dVqTcOWvbOxIM9u)

Na tela seguinte, remova `organizationalUnit`:

![](/files/BpqLbEWu7VqLIsqnUgtN)

Adicione `inetOrgPerson` e o aplicativo automaticamente trará as classes de dependência `organizationalPerson`, `person` e `top`:

![](/files/YdYGcPeBMObck146QbYt)

Avance para próxima tela para escolher o `cn`. Preencha com o `cn` de login desejado:

![](/files/rkTbToKVd0b2MBuK6QBB)

Nesta nova tela é exibido um sumário do que será feito e pode-se alterar o `sn`. Preencha, se possível, com o nome completo do usuário.

![](/files/UAK2Q9MARNkgjjLc5BhY)

Em seguida, clique com o botão direito do mouse em New Attribute:

![](/files/AsALAXV8r8g1PJxjwiWK)

Escolha `UID` e preencha com o valor do `UID`.

{% hint style="info" %}
O valor do `UID` deve vir do administrador de usuários do sistema.
{% endhint %}

Em seguida, o atributo `userPassword`:

![](/files/bCUiTq8d5mUGUQ9Zdn1q)

Ao encerrar, será aberta a tela para definir a senha. Escolha `CRYPT-SHA-512` e preencha com a senha desejada:

![](/files/7r3X324KqdjLcQZLurOL)

Finalmente, exclua o *objectClass* `organizationalPerson (structural)` clicando com o botão direito e escolhendo Delete Value:

![](/files/60EfbIhYLlCzDn4HvsTc)

### Adição de grupo a um usuário

Em *Users*, abra o cadastro de um usuário e copie o **DN** do usuário mostrado no cabeçalho da tela:

![](/files/5s0N5Anrp5D90p9zSxij)

{% hint style="info" %}
**DN** é a sigla para *Distinguished Name*, que é o **Nome Distinto** do objeto no LDAP. É a maneira de identificar um objeto de forma única no diretório. Ele fornece o caminho para a entrada específica dentro da hierarquia do diretório LDAP, que é organizada em uma estrutura de árvore. Um DN é composto por uma sequência de nomes distintos relativos (RDNs) conectados por vírgulas. Cada RDN é um componente do DN que representa um valor de atributo específico.

Por exemplo:

<img src="/files/Ykn46l5JbzlXh4U52qh7" alt="" data-size="original">

* `cn=leandro.pinheiro`: **Nome Comum** (`cn`) da entrada. Geralmente é utilizado para nomes de pessoas ou objetos.
* `ou=Users`: **Unidade Organizacional** (`ou`) onde a entrada está localizada.
* `dc=oldap`: **Componente de Domínio** (`dc`). Pode representar um subdomínio ou uma parte específica do domínio dentro da estrutura LDAP.
* `dc=igp`: Outro **Componente de Domínio** (`dc`). Representa outra parte do domínio, possivelmente indicando um departamento ou subdivisão dentro da organização.
* `dc=griaule`: **Componente de Domínio** (`dc`) de nível mais alto. Representa o domínio principal da organização.

Portanto, o DN `cn=leandro.pinheiro,ou=Users,dc=oldap,dc=igp,dc=griaule` identifica um usuário específico chamado `leandro.pinheiro` dentro da unidade organizacional `Users`, que faz parte do subdomínio `oldap`, do domínio `igp`, dentro do domínio principal `griaule`. Este DN fornece um caminho claro e exclusivo para localizar esta entrada específica no diretório LDAP da organização.
{% endhint %}

Em seguida, abra o raiz de *Groups* e escolha o grupo desejado. Clique com o botão direito no grupo e em New Attribute. Em `Attribute Type`, escolha `member`. Clique em Finish.

![](/files/nZai3lbcUQ1DZQp839M0)

Na tela **DN Editor**, cole o **DN** completo do usuário (copiado no primeiro passo). Clique em OK:

![](/files/6KvMALXzv0cZP8LFkhvY)

### Adição rápida de grupo a um usuário

Quando o grupo já possui usuários / membros, a adição de um novo usuário ao grupo é mais ágil: basta clicar com o botão direito no componente `member` e escolher New Value. A tela **DN Editor** abrirá. Então, como mostrado na seção anterior, cole o **DN** completo do usuário e clique em OK.

![](/files/2bO1Tq1Oh9cDWz4L28zn)

### Exclusão do usuário de um grupo

Abra o grupo em que o usuário está:

![](/files/O9fkEIuwmMV3trFhsMSk)

Clique com o botão direito no `member` do usuário que se deseja remover do grupo e clique em Delete Value:

![](/files/pGkev5JUzNiYFlYkACYP)

Confirme clicando em OK:

![](/files/OcIHHmjAEgGj4A4hBxl1)

### Criação de grupo

Para criar um novo grupo, clique com botão direito em cima de `ou=Groups` e escolha New -> New Entry.

![](/files/0y6isycwmsiWWPSsi2Dd)

Será aberta a tela de criação, semelhante à criação de usuários. Escolha a opção `organizationalUnit`.

![](/files/56GdPGhVin1sgzseg203)

Escolha `ou` e preencha um nome, no exemplo abaixo foi escolhido `LDAP`. Finalize a criação do grupo clicando em Finish.

![](/files/uprpizo0uzs6ND4GM7ct)

## Navegação no LDAP

### Pesquisa de grupos do usuário pelo "Quick Search"

Para localizar os grupos de um usuário, acesse o buscador do LDAP e selecione a opção `cn` ou `member`.

{% hint style="info" %}
Selecionando `member`, será necessário pesquisar utilizando o **DN** completo do usuário.
{% endhint %}

Na parte superior direita, verifique se o seguinte ícone está selecionado:

![](/files/IUAjeHT4jVDiAOokvW5k)

Se não estiver, selecione-o. Isso permitirá fazer uma busca por toda árvore do groups (opções `search one level only` ou `search whole subtree`).

![](/files/8kKAM8eMZPbrkFJnhHzq)

Verifique a resposta no `Quick Search`:

![](/files/pUGroAnyL8MFZn1hmtAg)

{% hint style="danger" %}
**Nunca realizar exclusão de usuário usando o resultado da pesquisa** (no item Quick Search), pois foram pesquisados os grupos que esta pessoa pertence. Portanto, **apagar uma linha do Quick Search significa apagar o grupo** e não o usuário.
{% endhint %}

### Lista de grupos do usuário na descrição do usuário

Outra forma de verificar os grupos que o usuário pertence é através do *Fetch*.

Para isso, clique com o botão direito do mouse no nome do usuário e escolha Fetch -> Fetch Operacional Attributes:

![](/files/N46FGJDkncsCmbhG1ww6)

Também é possível inserir o *Fetch Operacional Attributes* clicando com o botão direito do mouse e escolhendo Properties. Em seguida, clique em `Connection` e abra a aba `Browser Options`. Então, na seção `Features`, marque a opção `Fetch operational attributes while browsing`:

![](/files/75OFOCCF3t7OeMB29If5)

Assim, os grupos que o usuário pertence serão exibidos durante a navegação:

![](/files/SJt9qcRx6vC4mI9h9vyp)

### Troca de senha

Localize o usuário pelo Quick Search, como mostrado [neste passo a passo](#pesquisa-de-grupos-do-usuario-pelo-quick-search).

Após localizar o usuário, clique duas vezes em userPassword e abra a aba `New Password`.

![](/files/vJ7xYYoX3f0UVfadElkL)

Insira a nova senha e confirme.

Após aplicar a nova senha, aparecerá a tela do *Modification Logs* confirmando sua alteração.

### Verificação de senha

Para verificação de senha, primeiro localize o usuário pelo Quick Search, como mostrado [neste passo a passo](#pesquisa-de-grupos-do-usuario-pelo-quick-search).

Após localizar o usuário, clique duas vezes em userPassword e abra a aba `Current Password`.

No campo, `Verify Password`, insira a senha atual do usuário e clique em Verify.

Se a senha estiver correta, a mensagem "*Password verified successfully*" será exibida.

![](/files/oEDPMp8BV880UDoG5XsY)

## Organização de usuários

### Usuários por subgrupos

A organização eficiente dos usuários em um diretório LDAP pode ser realizada por meio das subárvores. Essa estrutura facilita a administração do diretório, permitindo uma segmentação clara dos usuários com base em critérios específicos como empresa, departamento ou contratos.

#### Conceito de Subárvore de Usuários

Para otimizar a gestão de usuários, é recomendado a implementação de uma subárvore hierárquica com um ou dois níveis no máximo de profundidade. Essa prática garante uma separação lógica dos usuários, trazendo clareza e eficiência na administração do diretório.

#### Vantagens da Subárvore de Usuários

1. **Simplificação da Administração**: Reduz a complexidade da administração do LDAP.
2. **Organização Estruturada**: Facilita a localização e o gerenciamento de objetos LDAP.
3. **Melhoria de Performance**: Minimiza o tempo de resposta em consultas e operações no LDAP.

![](/files/Lc6y1VQr1yHx3Y5miSqx)

Esta estrutura exemplifica:

* **ROOT**: Nível raiz do diretório LDAP.
* **Organização**: Unidade organizacional principal.
* **UF**: Unidade Federativa, exemplificando com `SP` (São Paulo).
* **CONTRATO**: Subdivisão de contratos, como `Polícia Científica`.
* **USER**: Usuários dentro do contrato específico.
* **Permissão**: Permissões associadas aos usuários.

Outro exemplo, esse diretamente no LDAP, consiste em uma árvore de subgrupos. Onde tem-se um grupo `policiaCivil` e dentro dele um subgrupo `SC`.

![](/files/HUQnIAyQtlljzjuyBT6H)


---

# 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.griaule.com/configuracao-do-gbds/ldapusermanual.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.
