美文网首页
golang 读取ldap数据库中账户过期时间

golang 读取ldap数据库中账户过期时间

作者: 東玖零 | 来源:发表于2021-11-30 18:08 被阅读0次

    1.什么是ldap?以下是百科的定义。

    轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

    我简单的理解就是按规则命名目录一样一层一层的放电脑文件,这些文件可以增删改查,配一张图可能更容易理解。


    ldpa.jpeg

    2.读取用户的过期时间,直接上代码!

    func GetAccountExpired(account string) {
        tag := "查询账户过期时间"
        l, err := ldap.DialURL("ldap://192.168.0.1:389")
        defer l.Close()
        if err != nil {
            logs.Info(tag, "创建连接失败", err)
            return
        }
        // 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成DC=example,DC=com(一条记录的所属位置)
        _, err = l.SimpleBind(&ldap.SimpleBindRequest{
            Username: "CN=管理员账号,OU=组织,DC=域名",
            Password: "管理员密码",
        })
        if err != nil {
            logs.Info(tag, "管理员验证失败", err)
            return
        }
        searchRequest := ldap.NewSearchRequest(
            "dc=example,dc=cn", // 域名
            ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
            fmt.Sprintf("(&(objectClass=organizationalPerson)(cn=%s))", account), //cn为查询条件名,开发时改成自己需要的属性名
            []string{"dn", "cn", "accountExpires"}, // 查询字段名,为空则查询所有的属性
            nil,
        )
        sr, err := l.Search(searchRequest)
        if err != nil {
            logs.Info(tag, "查询失败", err)
            return
        }
        if len(sr.Entries) != 1 {
            logs.Info(tag, "查询数据不正确,数据长度", len(sr.Entries))
            return
        }
        cn := sr.Entries[0].GetAttributeValue("cn") // golang读取SearchRequest中的数据
        expire := sr.Entries[0].GetAttributeValue("accountExpires")
        ntTime, _ := strconv.ParseInt(expire, 10, 64)
        ntTime = (ntTime - 1.1644473600125e+17) / 1e+7 // windows时间转换成unix时间
        stTime := time.Unix(int64(ntTime), 0).Format("2006-01-02 15:04:05")
        logs.Info("cn", cn, "expire", ntTime, "过期时间", stTime)
    }
    

    相关文章

      网友评论

          本文标题:golang 读取ldap数据库中账户过期时间

          本文链接:https://www.haomeiwen.com/subject/kwbdxrtx.html