Descrição
Crie um perfil de conexão de servidor LDAP/AD na plataforma Segura™. Uma única requisição define o host e a porta, a credencial PAM usada no bind, a DN base, o formato da conta, a ordem de avaliação na cadeia de autenticação e os parâmetros de consulta de grupo.
O servidor é criado no estado ativo e entra imediatamente na cadeia de autenticação. É o mesmo registro que a interface web gerencia em Settings > Authentication > LDAP/AD: um servidor criado aqui aparece lá, e vice-versa.
Pré-requisitos
- Uma aplicação com a autorização Users concedida pelo administrador no A2A, com a permissão do recurso definida como Leitura e escrita. Para mais informações, acesse Como gerenciar autorizações no A2A.
- Um token de acesso OAuth 2.0 válido. Para mais informações, acesse Como autenticar uma aplicação A2A.
- Um domínio cadastrado na plataforma, para referenciar em
domain_id. - Uma credencial PAM contendo a conta de bind, para referenciar em
bind_credential_id.
Um token de acesso carrega apenas as autorizações que existiam no momento em que foi gerado. Depois que o administrador habilitar a autorização Users, gere um novo token para a aplicação: um token existente não passa a ter a nova autorização.
Requisição
POST /api/v2/iam/ldap-servers
Cabeçalhos
| Cabeçalho | Obrigatório | Descrição |
|---|---|---|
Content-Type |
Sim | Deve ser application/json. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
host |
string | Sim | Hostname ou endereço IP do servidor de diretório. Máximo de 200 caracteres. |
port |
integer | Sim | Porta em que o diretório escuta. Valores permitidos: 1 a 65535. |
dn_base |
string | Sim | DN base para buscas de usuário. Máximo de 255 caracteres. |
use_ssl |
boolean | Sim | Habilita o LDAPS. |
member_is_dn |
boolean | Sim | Indica que o atributo de membro retorna uma DN completa. |
bind_requires_dn |
boolean | Sim | Indica que o diretório exige uma DN para o bind. |
account_form |
string | Sim | Formato de usuário esperado pelo diretório. Valores permitidos: dn, username, backslash, principal, null. |
order |
integer | Sim | Ordem de avaliação na cadeia de autenticação. O valor menor é avaliado primeiro. Deve ser único entre os servidores ativos. |
domain_id |
integer | Sim | Código de identificação do domínio ao qual o servidor pertence. |
bind_credential_id |
integer | Sim | Código de identificação da credencial PAM usada no bind. |
use_credential_domain |
boolean | Sim | Usa o domínio da credencial de bind em vez do domínio próprio do servidor. A credencial deve ter um domínio. |
ignore_disabled_expired |
boolean | Sim | Ignora contas expiradas durante a sincronização de grupo. |
network_connector_id |
integer | Não | Código de identificação do agente de network connector usado para alcançar o servidor. Retorna null quando o servidor é alcançado diretamente. |
account_filter_format |
string | Não | Filtro LDAP customizado usado para localizar uma conta, em que %s é o placeholder do nome de usuário. Máximo de 100 caracteres. |
username_attribute |
string | Não | Atributo do diretório que contém o nome de usuário. Padrão: uid. Máximo de 30 caracteres. |
dn_bind |
string | Não | Caminho base usado na operação de bind. Máximo de 200 caracteres. |
group |
string | Não | Restringe a autenticação aos membros deste grupo. Máximo de 200 caracteres. |
group_dn |
string | Não | DN base para buscas de grupo. Máximo de 200 caracteres. |
group_attribute |
string | Não | Atributo do diretório que contém o nome do grupo. Máximo de 200 caracteres. |
group_scope |
string | Não | Escopo da busca de grupo. Valores permitidos: subtree, onelevel, base, null. |
group_filter |
string | Não | Filtro LDAP aplicado ao buscar grupos. Máximo de 200 caracteres. |
member_attribute |
string | Não | Atributo do grupo que lista seus membros. Máximo de 200 caracteres. |
bind_credential_id é obrigatório. A API faz o bind no diretório por meio de uma credencial PAM e não aceita um nome de usuário e senha enviados no corpo da requisição.
Três campos não podem ser enviados. O estado active é alterado por meio de POST | Ativar servidor LDAP e POST | Desativar servidor LDAP, e account_domain_name e account_domain_name_short são derivados do domínio referenciado em domain_id. Enviar qualquer um dos três retorna 422 patch.field.not.allowed.
Exemplo de requisição
POST {{url}}/api/v2/iam/ldap-servers
Corpo
{
"host": "ad.example.com",
"port": 389,
"dn_base": "CN=Users,DC=example,DC=com",
"use_ssl": false,
"member_is_dn": false,
"bind_requires_dn": false,
"account_form": "principal",
"order": 1,
"domain_id": 5,
"bind_credential_id": 102,
"use_credential_domain": false,
"ignore_disabled_expired": false
}
Resposta
HTTP/1.1 201 Created
Location: /api/v2/iam/ldap-servers/7
O cabeçalho Location contém o caminho do servidor criado.
Na versão 4.2.7, a resposta 201 não carrega um cabeçalho ETag. A partir da versão 4.2.10, ela carrega, e você pode usar esse valor diretamente em If-Match. Envie uma requisição GET | Listar um servidor LDAP por [id] para o caminho em Location para ler a versão atual do servidor, que PUT | Atualizar servidor LDAP por [id] e PATCH | Atualizar parcialmente servidor LDAP por [id] exigem no cabeçalho If-Match.
Exemplo de corpo da resposta
{
"data": {
"id": 7,
"ldap_server": {
"host": "ad.example.com",
"port": 389,
"dn_base": "CN=Users,DC=example,DC=com",
"active": true,
"use_ssl": false,
"member_is_dn": false,
"bind_requires_dn": false,
"account_form": "principal",
"order": 1,
"domain": { "id": 5, "name": "EXAMPLE.COM" },
"bind_credential": {
"id": 102,
"username": "[email protected]",
"domain": { "id": 5, "name": "EXAMPLE.COM" }
},
"network_connector": null,
"account_filter_format": null,
"use_credential_domain": false,
"ignore_disabled_expired": false,
"username_attribute": null,
"dn_bind": null,
"account_domain_name": "EXAMPLE.COM",
"account_domain_name_short": "EXAMPLE",
"group": null,
"group_dn": null,
"group_attribute": null,
"group_scope": null,
"group_filter": null,
"member_attribute": null,
"created_at": "2026-05-08T22:42:34+00:00",
"updated_at": "2026-05-08T22:42:34+00:00"
}
},
"meta": {
"links": { "self": "/api/v2/iam/ldap-servers/7" },
"actions": {
"test-connection": "/api/v2/iam/ldap-servers/7/test-connection",
"deactivate": "/api/v2/iam/ldap-servers/7/deactivate"
}
}
}
Campos do corpo da resposta
| Campo | Tipo | Descrição |
|---|---|---|
data |
object | O servidor LDAP criado. |
data.id |
integer | Código de identificação único do servidor, atribuído pela Segura™. |
data.ldap_server |
object | Atributos do servidor. |
data.ldap_server.host |
string | Hostname ou endereço IP do servidor de diretório. |
data.ldap_server.port |
integer | Porta em que o diretório escuta. |
data.ldap_server.dn_base |
string | DN base para buscas de usuário. |
data.ldap_server.active |
boolean | Indica se o servidor está ativo. Um servidor criado sempre está ativo. |
data.ldap_server.use_ssl |
boolean | Indica se o LDAPS está habilitado. |
data.ldap_server.member_is_dn |
boolean | Indica que o atributo de membro retorna uma DN completa. |
data.ldap_server.bind_requires_dn |
boolean | Indica que o diretório exige uma DN para o bind. |
data.ldap_server.account_form |
string | Formato de usuário esperado pelo diretório. |
data.ldap_server.order |
integer | Ordem de avaliação na cadeia de autenticação. |
data.ldap_server.domain |
object | Domínio ao qual o servidor pertence. Retorna null quando o nome de domínio armazenado não corresponde a nenhum domínio cadastrado. |
data.ldap_server.domain.id |
integer | Código de identificação do domínio. |
data.ldap_server.domain.name |
string | Nome do domínio. |
data.ldap_server.bind_credential |
object | Credencial PAM usada no bind. |
data.ldap_server.bind_credential.id |
integer | Código de identificação da credencial. |
data.ldap_server.bind_credential.username |
string | Nome de usuário da credencial. |
data.ldap_server.bind_credential.domain |
object | Domínio da credencial. |
data.ldap_server.network_connector |
object | Agente de network connector usado para alcançar o servidor. Retorna null quando o servidor é alcançado diretamente. |
data.ldap_server.network_connector.id |
integer | Código de identificação do agente de network connector. |
data.ldap_server.network_connector.name |
string | Nome do agente de network connector. |
data.ldap_server.account_filter_format |
string | Filtro LDAP customizado usado para localizar uma conta. |
data.ldap_server.use_credential_domain |
boolean | Indica se o domínio da credencial de bind é usado. |
data.ldap_server.ignore_disabled_expired |
boolean | Indica se contas expiradas são ignoradas durante a sincronização de grupo. |
data.ldap_server.username_attribute |
string | Atributo do diretório que contém o nome de usuário. |
data.ldap_server.dn_bind |
string | Caminho base usado na operação de bind. |
data.ldap_server.account_domain_name |
string | Nome de domínio aplicado às contas. Derivado do domínio referenciado e somente leitura. |
data.ldap_server.account_domain_name_short |
string | Nome de domínio curto aplicado às contas. Derivado do domínio referenciado e somente leitura. |
data.ldap_server.group |
string | Grupo cujos membros têm permissão para autenticar. |
data.ldap_server.group_dn |
string | DN base para buscas de grupo. |
data.ldap_server.group_attribute |
string | Atributo do diretório que contém o nome do grupo. |
data.ldap_server.group_scope |
string | Escopo da busca de grupo. |
data.ldap_server.group_filter |
string | Filtro LDAP aplicado ao buscar grupos. |
data.ldap_server.member_attribute |
string | Atributo do grupo que lista seus membros. |
data.ldap_server.created_at |
datetime | Data e hora de criação do servidor, no formato ISO 8601. |
data.ldap_server.updated_at |
datetime | Data e hora da última alteração do servidor, no formato ISO 8601. |
meta |
object | Metadados do recurso. |
meta.links |
object | Links de navegação para o recurso criado. |
meta.links.self |
string | Caminho do servidor criado. |
meta.actions |
object | Ações disponíveis para o servidor em seu estado atual. Um servidor criado como ativo oferece test-connection e deactivate. |
A partir da versão 4.2.10, a resposta retorna id e o id de cada objeto aninhado como string, por exemplo "7". O corpo das requisições continua recebendo esses valores como inteiros.
Erros
| Código HTTP | Mensagem | Causa possível | Solução |
|---|---|---|---|
400 |
api.request.bad_request |
A requisição carrega um parâmetro de query desconhecido. | Remova o parâmetro e reenvie a requisição. |
401 |
api.auth.unauthorized |
O token de acesso está ausente ou expirou. | Solicite um novo token de acesso. |
403 |
api.auth.forbidden |
A autorização não tem permissão para gerenciar servidores LDAP. | Peça ao administrador para verificar a autorização Users no A2A e gerar um novo token. |
422 |
api.validation.required_field |
Um campo obrigatório está ausente do corpo da requisição. | Adicione o campo ausente e reenvie a requisição. |
422 |
api.validation.invalid_type |
Um campo recebeu um valor de tipo incorreto. | Verifique o tipo esperado para o campo e reenvie a requisição. |
422 |
api.validation.port.out_of_range |
port está fora do intervalo de 1 a 65535. |
Envie uma porta dentro do intervalo. |
422 |
api.validation.order.duplicate |
Outro servidor ativo já usa este valor de order. |
Envie um valor diferente ou desative o servidor que usa esse valor. |
422 |
api.validation.invalid_reference |
O domínio, a credencial ou o network connector referenciado não existe. | Verifique os códigos de identificação enviados em domain_id, bind_credential_id e network_connector_id. |
422 |
api.enum.invalid_value |
account_form ou group_scope recebeu um valor fora da lista permitida. |
Verifique os valores permitidos para o campo e reenvie a requisição. |
422 |
patch.field.not.allowed |
O corpo carrega um campo somente leitura, como active, account_domain_name ou account_domain_name_short. |
Remova o campo e reenvie a requisição. |
429 |
api.rate_limit.exceeded |
O limite de requisições foi excedido. | Reduza a frequência de requisições e tente novamente. |
Exemplo de resposta de erro
422 outro servidor ativo já usa o valor de order:
{
"code": "api.validation.order.duplicate",
"message": "Another active LDAP server already uses this order.",
"details": [
{ "field": "order", "code": "api.validation.order.duplicate" }
]
}
Para mensagens de erros de autenticação e a política de 403 versus 404, acesse API v2 - Convenções e comportamentos compartilhados.