AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-912853

iSpain17's questions

Martin Hope
iSpain17
Asked: 2024-02-29 01:48:26 +0800 CST

A senha do usuário Samba4 não é atualizada corretamente via mensagem LDAP, apenas via smbpasswd

  • 5

Eu configurei um Samba4 AD DC e posso autenticar com sucesso com meu Administratorusuário a partir do código .net:

var directoryIdentifier = new LdapDirectoryIdentifier("127.0.0.1", 636);
var credentials = new NetworkCredential($"CN=Administrator,CN=Users,DC=ldap,DC=test,DC=dev", "admin1234!");
using(var connection = new LdapConnection(directoryIdentifier, credentials)) 
{
    try 
    {
        connection.SessionOptions.ProtocolVersion = 3;
        connection.SessionOptions.SecureSocketLayer = true;
        connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;

        connection.AuthType = AuthType.Basic;

        connection.Bind(credentials);
    }
}

Então com esta conexão, crio um novo usuário:

        var addRequest = new AddRequest(
            "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev",
            new DirectoryAttribute("objectClass", new object[] { "user" }),
            new DirectoryAttribute("cn", "testuser"),
            new DirectoryAttribute("uid", "testuser"),
            new DirectoryAttribute("sAMAccountName", "testuser"),
            new DirectoryAttribute("unicodePwd", Encoding.Unicode.GetBytes($@"""pw1234!"""))
        );
        var addResponse = connection.SendRequest(addRequest);

        Console.WriteLine($"[ADD] response: {addResponse.ErrorMessage}");

ou fazendo o mesmo no terminal:

ldapadd -H LDAPS://127.0.0.1:636 -D "CN=Administrator,CN=Users,DC=ldap,DC=test,DC=dev" -w admin1234!
dn: CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev
objectClass: user
cn: testuser
uid: testuser
unicodePwd:: IgBwAHcAMQAyADMANAAhACIA
sAMAccountName: testUser

de onde obtive o unicodePwd echo -n "\"pw1234\!\"" | iconv -f UTF-8 -t UTF-16LE | base64.

No entanto, ao tentar autenticar com este usuário:

var testUser_directoryIdentifier = new LdapDirectoryIdentifier("127.0.0.1", 636);
var testUser_credentials = new NetworkCredential($"CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev", "pw1234!");
using(var connection = new LdapConnection(testUser_directoryIdentifier, testUser_credentials)) 
{
    try 
    {
        connection.SessionOptions.ProtocolVersion = 3;
        connection.SessionOptions.SecureSocketLayer = true;
        connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;

        connection.AuthType = AuthType.Basic;

        connection.Bind(testUser_credentials);
    }
}

Eu recebo o erro:

A credencial fornecida é inválida. [Código de erro 49]

Da mesma forma, para o comando do terminal

ldapwhoami -vvv -H ldaps://127.0.0.1:636 -D "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev" -x -w pw1234\! 

eu recebo

ldap_bind: Credenciais inválidas (49) informações adicionais: 80090308: LdapErr: DSID-0C0903A9, comentário: erro AcceptSecurityContext, dados 533, v1db1

Ao executar ldbsearch -H /var/lib/samba/private/sam.ldb '(cn=testuser)' unicodePwdno samba AD DC, recebo o seguinte:

# record 1
dn: CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev
unicodePwd:: 0pQq91kmGPJQOuQ3oiHPgg==

[...]

(Pergunta secundária, 0pQq91kmGPJQOuQ3oiHPgg==não é igual ao que eu passei, IgBwAHcAMQAyADMANAAhACIAnão faço ideia do porquê. Porém, parece não relacionado.)

Porém, quando uso a smbpasswdferramenta e defino a mesma senha, parece funcionar:

smbpasswd testuser

Posso confirmar isso executando novamente ldbsearch -H /var/lib/samba/private/sam.ldb '(cn=testuser)' unicodePwde recebendo o mesmo registro de volta.

Desta vez, o mesmo script bash funciona:

ldapwhoami -vvv -H ldaps://127.0.0.1:636 -D "CN=testuser,CN=Users,DC=ldap,DC=test,DC=dev" -x -w pw1234\!
ldap_initialize( ldaps://127.0.0.1:636/??base )
u:DEV-AD\testUser
Result: Success (0)

Por que uma mensagem LDAP simples não funciona (que está totalmente de acordo com as unicodePwdespecificações do Active Directory)? O smbpasswd também atualiza algo que é usado na autenticação via ldapsearch -D -wou .net LdapConnection?

ldap
  • 1 respostas
  • 18 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve