Criação de usuário no Active Directory com Python.

18/04/2024

0

Prezados, boa noite!

Estou tentando criar um script em Python, ao qual ele recebe o nome do usuário, um pin e uma data, e ele faz essa criação no active directory que está alocado ao windows server 2016. Abaixo apresento o código:


from ldap3 import Connection, MODIFY_ADD, MODIFY_DELETE, MODIFY_REPLACE, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, AUTO_BIND_DEFAULT, AUTO_BIND_NO_TLS, SUBTREE, Server

# Função para criar usuário com base nas regras especificadas
def criar_usuario_Matriz_ClaroMigracao_Talk(pin, nome, data):
# Verifica se a variável nome está vazia


if not nome:
print("A variável nome está vazia. A função não será executada.")
return False

if not pin:
print("A variável nome está vazia. A função não será executada.")
return False

# Configuração do servidor LDAP
server = Server('192.168.0.202', port=389)

# Conectando ao servidor LDAP
con = Connection(server, user=f'abc\\teste.adm', password=f"Teste123*", auto_bind=True)

# Monta o DN (Distinguished Name) do novo usuário
user_dn = f'CN=,OU=TALK,OU=CLARO,OU=OPERACAO,OU=MOC,OU=USUARIOS,OU=Sites,DC=abc,DC=local'

# Extrai o último nome da variável nome
ultimo_nome = nome.split()[-1]

# Extrai o primeiro nome da variável nome
primeiro_nome = nome.split()[0]


# Dados do novo usuário
user_attributes = {
'objectClass': ['top', 'person', 'organizationalPerson', 'user'],
'cn': nome, # nome comum
'sn': ultimo_nome, # sobrenome
'displayName': nome,
'givenName': primeiro_nome, # nome
'sAMAccountName': pin, # nome de logon # nome principal
'unicodePwd': 'TeT2024*', # Defina a senha do usuário aqui
'physicalDeliveryOfficeName': f'NOVATOS ', # Atributo "Escritório"
'description': f'ATENDENTE JR - PIN-', # Atributo "Descrição"
#userAccountControl': 512 #Habilita a conta
}



# Criar a entrada do novo usuário
con.add(user_dn, attributes=user_attributes)

# Verificar se o usuário foi criado com sucesso
if con.result['result'] == 0:
# Fechar a conexão
con.unbind()
else:
print(f"Falha ao criar . Código de erro: {con.result['result']}")
print(f"Descrição do erro: {con.result['description']}")
input("Pressione Enter para continuar...")
# Fechar a conexão
con.unbind()
return False


# Chama a função para criar o usuário
criar_usuario_Matriz_ClaroMigracao_Talk('11111', "Teste Primeiro Segundo", "04-03-2024")

O problema ocorre com o atributo: "unicodePwd". Quando retiro esse atributo, consigo criar o usuário corretamente, porém sem senha. Ao tentar utilizar esse atributo, ocorre o seguinte erro: Código de erro: 53
Descrição do erro: unwillingToPerform

Podem me ajudar?
Marco Araújo

Marco Araújo

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar