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.yml
O arquivo criará um contêiner OpenLDAP e um contêiner opcional PhPLDAPADmin para uma GUI baseada na Web.
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
- O
osixia/openldap
A imagem cria automaticamente uma estrutura de organização básica com apenasLDAP_DOMAIN
eLDAP_ADMIN_PASSWORD
- O
osixia/phpldapadmin
A imagem fornece uma interface da web para gerenciar seu diretório LDAP, acessível emhttps://localhost:6443
Correrdocker-compose up -d
Para 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.ldif
Com o seguinte conteúdo:
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:OuserPassword
O 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 usandoslappasswd
ouopenssl 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 useldapadd
Para 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 ojdoe
Entrada 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.
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:
- Faça login como administrador.
- Navegar paraConfiguraçõesEm geral
- HabilitarAutenticação LDAP
- Preencha os campos correspondentes às variáveis de ambiente acima.
- 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_PORT
A variável de ambiente está sendo passada como uma string com cotações (por exemplo,,"389"
Solução:
- Garanta o
LDAP_SERVER_PORT
valor em seu.env
Comando 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:Definir
LDAP_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 porta
636
. 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 porta
389
e 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:
-
Verifique a senha:Verifique se você está usando a senha de texto simples correto. O
userPassword
O valor no arquivo LDIF é o que o servidor espera. Se for um hash, você deve fornecer a senha de texto simples original. -
Verifique o DN do usuário:O DN usado para o bind (
uid=jdoe,ou=users,dc=example,dc=org
) deve estar correto. -
Teste com
ldapwhoami
Verifique 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 com
ldap_bind: Invalid credentials (49)
, o problema é com as credenciais ou a configuração de senha do servidor LDAP, não abrir o WebUI. -
Redefina a senha:Se você não conhece a senha, redefini -la usando
ldapmodify
ouldappasswd
. 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.ldifdn: uid = jdoe, ou = usuários, dc = exemplo, dc = org
ChangeType: modifique
Substitua: UserPassword
UserPassword: {simples} newPasswordAplique com:
Docker Exec Openldap ldapmodify -x -d "cn = admin, dc = exemplo, dc = org" -w admin-f /path/to/change_password.ldif