加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – net-ldap用密码创建用户

发布时间:2020-12-17 02:06:50 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个已使用net-ldap gem设置密码的AD帐户.我能够很好地连接到服务器.我也可以在不传递:unicodepwd属性的情况下添加新用户,但是在创建新用户时没有设置密码.当我传递该属性时,不会创建用户,并且它失败并显示错误代码53以及以下消息“不愿意执
我正在尝试创建一个已使用net-ldap gem设置密码的AD帐户.我能够很好地连接到服务器.我也可以在不传递:unicodepwd属性的情况下添加新用户,但是在创建新用户时没有设置密码.当我传递该属性时,不会创建用户,并且它失败并显示错误代码53以及以下消息“不愿意执行”.如果我在创建用户之后尝试替换用户的密码,我也会得到同样的错误.我遇到过很多可能的答案,但没有一个对我有用.

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,:name => fullname(first_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访问它以更新密码?任何帮助表示赞赏

谢谢

UPDATE

一旦我以不同的方式编码字符串并连接到SSL端口636而不是默认端口389,我就能够使用它.使用编码是问题,似乎它错误地编码了密码.

这是我的新连接

@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}00"
            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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读