Golang 串接 LDAP 登入 === ###### tags: `go` `api` `ldap` `login` Package --- yarn add github.com/go-ldap/ldap/v3 Sample Code --- ``` func LdapCheck(dto *models.LoginDto) (bool, error) { ldapServer := "xxx.xxx.com" port := 636 ldapUrl := fmt.Sprintf("%s:%d", ldapServer, port) l, err := ldap.DialTLS("tcp", ldapUrl, &tls.Config{InsecureSkipVerify: true}) // TLS on default port 636 if err != nil { log.Println("can not link to AD server") return false, err } defer l.Close() ldapProxyUser := "domain\\admin_user" ldapProxyPass := "admin_password" bind := ldap.NewSimpleBindRequest(ldapProxyUser, ldapProxyPass, nil) _, err = l.SimpleBind(bind) if err != nil { log.Println("can not link to AD server via admin account") return false, err } targetUser := "domain\\" + dto.USER_NAME targetPass := dto.PASSWORD targetBind := ldap.NewSimpleBindRequest(targetUser, targetPass, nil) _, err = l.SimpleBind(targetBind) if err != nil { log.Println("帳號或密碼錯誤") return false, nil } log.Println("成功連線及驗證") return true, nil } ```