html Integração do OpenLDAP | Nullcore
Pule para o conteúdo principal

Integração do OpenlDAP

Este guia fornece uma explicação abrangente para configurar a autenticação OpenLDAP com o Nullcore. Ele abrange a criação de um servidor OpenLDAP de teste usando o Docker, semeando -o com usuários de amostra, configurando o Nullcore para se conectar a ele e solucionar problemas de problemas comuns.

1. Configurando o OpenLDAP com o Docker

A maneira mais fácil de executar um servidor OpenLDAP de teste é usando o Docker. Essedocker-compose.ymlO arquivo criará um contêiner OpenLDAP e um contêiner opcional PhPLDAPADmin para uma GUI baseada na Web.

docker-compose.yml
versão "3,9"
serviços
LDAP
imagemOsixia/Openldap1.5.0
container_nameOpenldap
ambiente
Ldap_organização "Exemplo Inc"
Ldap_domain "Exemplo.org"
Ldap_admin_passwordadmin
LDAP_TLS "falso"
volumes
./ldap/var/var/lib/ldap
./ldap/etc/etc/ldap/slapd.d
portas
"389: 389"
redes [[LDAPNET

phpldapadmin
imagemOsixia/phPldapadmin0.9.0
ambiente
Phpldapadmin_ldap_hosts "LDAP"
portas
"6443: 443"
redes [[LDAPNET

redes
LDAPNET
motoristaponte
  • Oosixia/openldapA imagem cria automaticamente uma estrutura de organização básica com apenasLDAP_DOMAINeLDAP_ADMIN_PASSWORD
  • Oosixia/phpldapadminA imagem fornece uma interface da web para gerenciar seu diretório LDAP, acessível emhttps://localhost:6443

Correrdocker-compose up -dPara iniciar os recipientes. Confirme que o servidor LDAP começou verificando os logs:docker logs openldap. Você deve ver uma mensagem "Slapd" iniciado ".

2. Semeando um usuário de amostra (LDIF)

Para testar o login, você precisa adicionar um usuário de amostra ao diretório LDAP. Crie um arquivo chamadoseed.ldifCom o seguinte conteúdo:

SEED.LDIF
dn: ou = usuários, dc = exemplo, dc = org
ObjectClass: OrganizationalUnit
Ou: usuários

dn: uid = jdoe, ou = usuários, dc = exemplo, dc = org
ObjectClass: Inetorgperson
CN: John Doe
SN: DOE
UID: JDOE
Correio: jdoe@example.org
UserPassword: {Plain} Senha123

Nota em senhas:OuserPasswordO campo é definido como um valor de texto simples para simplificar neste ambiente de teste. Na produção, você deve sempre usar uma senha de hash. Você pode gerar uma senha de hash usandoslappasswdouopenssl passwd. Por exemplo:

# Usando Slappasswd (dentro do recipiente)
Docker Exec Openldap slappasswd -s your_password

# Usando OpenSSL
OpenSSL Passwd -6 Your_password

Copie o arquivo LDIF no contêiner e useldapaddPara adicionar a entrada:

Docker CP Seed.ldif Openldap: /eed.ldif
Docker EXEC Openldap ldapadd -x -d "cn = admin, dc = exemplo, dc = org" -w admin -f /seed.ldif

Uma operação bem -sucedida mostrará uma mensagem "Adicionando nova entrada".

3. Verificando a conexão LDAP

Antes de configurar o Nullcore, verifique se o servidor LDAP está acessível e o usuário existe.

LDAPSERCH -X -H LDAP: // localhost: 389 \
-D "cn = admin, dc = exemplo, dc = org" -w admin \
-b "dc = exemplo, dc = org" "(uid = jdoe)"

Se o comando retornar ojdoeEntrada do usuário, seu servidor LDAP está pronto.

4. Configurando o Nullcore

Agora, configure sua instância aberta do Webui para usar o servidor LDAP para autenticação.

Variáveis ​​de ambiente

Defina as seguintes variáveis ​​de ambiente para sua instância aberta da Webui.

informações

O Nullcore lê essas variáveis ​​de ambiente apenas na primeira startup. Alterações subsequentes devem ser feitas no painel de configurações do administrador da interface do usuário, a menos que você tenhaENABLE_PERSISTENT_CONFIG=false

# Ativar LDAP
Enable_ldap = "true"

# --- Configurações do servidor ---
Ldap_server_label = "Openldap"
LDAP_SERVER_HOST = "localhost" # ou o nome ip/host do seu servidor LDAP
Ldap_server_port = "389" # Use 389 para texto simples/starttls, 636 para LDAPS
Ldap_use_tls = "false" # definido como "true" para ldaps ou starttls
Ldap_validate_cert = "false" # definido como "true" na produção com certificados válidos

# --- Credenciais de ligação ---
Ldap_app_dn = "cn = admin, dc = exemplo, dc = org"
Ldap_app_password = "admin"

# --- Esquema do usuário ---
Ldap_search_base = "dc = exemplo, dc = org"
Ldap_attribute_for_username = "uid"
Ldap_attribute_for_mail = "Mail"
Ldap_search_filter = "(uid =%(usuário) s)" # mais seguro e executivo

Configuração da interface do usuário

Como alternativa, você pode definir essas configurações diretamente na interface do usuário:

  1. Faça login como administrador.
  2. Navegar paraConfiguraçõesEm geral
  3. HabilitarAutenticação LDAP
  4. Preencha os campos correspondentes às variáveis ​​de ambiente acima.
  5. Salve as configurações e reinicie o Nullcore.

5. login

Abra uma nova janela de navegador incógnita e navegue até a sua instância aberta do WebUI.

  • ID de login: jdoe
  • Senha: password123(ou a senha que você definiu)

Após o login bem -sucedido, uma nova conta de usuário com a função "Usuário" será criada automaticamente no Webui aberto. Um administrador pode aumentar posteriormente a função do usuário, se necessário.

6. Solução de problemas de erros comuns

Aqui estão as soluções para erros comuns encontrados durante a integração LDAP.

port must be an integer

Erro | Open_webui.Routers.Auths: ldap_auth: 447 - LDAP Erro de autenticação: a porta deve ser um número inteiro - {}

Causa:OLDAP_SERVER_PORTA variável de ambiente está sendo passada como uma string com cotações (por exemplo,,"389"

Solução:

  • Garanta oLDAP_SERVER_PORTvalor em seu.envComando de arquivo ou exportação não tem cotações:LDAP_SERVER_PORT=389
  • Remova o protocolo (http://, Assim,ldap://) deLDAP_SERVER_HOST. Deve ser apenas o nome do host ou IP (por exemplo,,localhost

[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred

Erro | Erro de autenticação LDAP: ("('Erro de embalagem SSL SSL: [SSL: inesperado_eof_while_reading] Ocorreu em violação do protocolo (_ssl.c: 1016)',),) - {}

Causa:Esta é uma falha no aperto de mão do TLS. O cliente (Nullcore) está tentando iniciar uma conexão TLS, mas o servidor (OpenLDAP) não está configurado para ela ou está esperando um protocolo diferente.

Solução:

  • Se você não pretende usar o TLS:DefinirLDAP_USE_TLS="false"e conecte -se à porta padrão de texto simples389
  • Se você pretende usar o LDAPS:Verifique se o seu servidor LDAP está configurado para TLS e ouvindo na porta636. DefinirLDAP_SERVER_PORT="636"eLDAP_USE_TLS="true"
  • Se você pretende usar o StartTLS:Seu servidor LDAP deve suportar a extensão STARTTLS. Conectar na porta389e definaLDAP_USE_TLS="true"

err=49 text=(Credenciais inválidas)

Openldap | ... conn = 1001 op = 0 resultado tag = 97 err = 49 text =

Causa:O servidor LDAP rejeitou a tentativa de ligação porque o nome distinto (DN) ou a senha estava incorreta. Isso acontece durante a segunda tentativa de ligação, onde o Nullcore tenta se autenticar com as credenciais fornecidas pelo usuário.

Solução:

  1. Verifique a senha:Verifique se você está usando a senha de texto simples correto. OuserPasswordO valor no arquivo LDIF é o que o servidor espera. Se for um hash, você deve fornecer a senha de texto simples original.

  2. Verifique o DN do usuário:O DN usado para o bind (uid=jdoe,ou=users,dc=example,dc=org) deve estar correto.

  3. Teste comldapwhoamiVerifique as credenciais diretamente contra o servidor LDAP para isolar o problema do Nullcore.

    LDAPWHOAMI -X -H LDAP: // localhost: 389 \
    -D "uid = jdoe, ou = usuários, dc = exemplo, dc = org" -w "senha123"

    Se este comando falhar comldap_bind: Invalid credentials (49), o problema é com as credenciais ou a configuração de senha do servidor LDAP, não abrir o WebUI.

  4. Redefina a senha:Se você não conhece a senha, redefini -la usandoldapmodifyouldappasswd. Muitas vezes é mais fácil usar um{PLAIN}senha para testes iniciais e depois mude para um hash seguro como{SSHA}

    Exemplo ldif para alterar a senha:

    change_password.ldif
    dn: uid = jdoe, ou = usuários, dc = exemplo, dc = org
    ChangeType: modifique
    Substitua: UserPassword
    UserPassword: {simples} newPassword

    Aplique com:

    Docker Exec Openldap ldapmodify -x -d "cn = admin, dc = exemplo, dc = org" -w admin-f /path/to/change_password.ldif