gpt4 book ai didi

ruby - net-ldap 创建带密码的用户

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:49 25 4
gpt4 key购买 nike

我正在尝试使用已使用 net-ldap gem 设置的密码创建一个 AD 帐户。我能够很好地连接到服务器。而且我还可以在不传递 :unicodepwd 属性的情况下添加新用户,但是在创建新用户时没有设置密码。当我确实传递该属性时,未创建用户并且失败并显示 错误代码 53 和以下消息 Unwilling to perform。如果我在创建用户密码后尝试替换它,我也会遇到同样的错误。我遇到过许多可能的答案,但没有一个对我有用。

def initialize

@client = Net::LDAP.new
@client.host = server_ip
@client.base = base
@client.port = 389
@client.auth(username, password)

if @client.bind
puts "Connected"

add("TEST", "JEST", "testjest")
else
puts "Not Connected"
display_error
end
end

def add(first_name, last_name, username)
dn = dn_value

attrs = {
:objectclass => ["top", "person", "organizationalPerson", "user"],
:cn => fullname(first_name, last_name),
:sn => last_name.capitalize,
:givenname => first_name.capitalize,
:displayname => fullname(first_name, last_name),
:name => fullname(first_name, last_name),
:samaccountname => username,
:unicodePwd => '"password"'.encode("utf-16")
}
@client.add(:dn => dn, :attributes => attrs)



if @client.get_operation_result.code != 0
puts "Failed to add user #{fullname(first_name, last_name)}"
display_error
else
puts "Added user #{fullname(first_name, last_name)}"
end
end

如何在创建用户时为用户设置密码,而不必通过 gui 访问它来更新密码?感谢任何帮助

谢谢

更新

一旦我以不同的方式对字符串进行编码并连接到 SSL 端口 636 而不是默认端口 389,我就能够让它工作。使用 encode 是问题所在,似乎是密码编码不正确。

这是我的新连接

@client = Net::LDAP.new
@client.host = server_ip
@client.base = base
@client.port = 636
@client.encryption(:method => :simple_tls)
@client.auth(username, password)

以及我用来编码密码的方法

def encode_passwd(string)
newstring = ""
string = "\"" + string + "\""
string.split("").each do |c|
newstring = "#{newstring}#{c}\000"
end
return newstring
end

希望这对以后的人有帮助

最佳答案

Net::LDAP::Password.generate 不适用于 ActiveDirectory。 :unicodePwd LDAP-Entry-Attribute(用 ruby​​-gem net-ldap 的说法),你必须这样编码

unicodepwd = "\"#{plain_text_password}\"".encode(Encoding::UTF_16LE).force_encoding(Encoding::ASCII_8BIT)

在此处查看有关编码的详细信息:https://msdn.microsoft.com/en-us/library/cc223248.aspx

关于ruby - net-ldap 创建带密码的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com