You can provide LDAP based authentication on your web page easily.
- Code:
import (
"github.com/sona-tar/ldapc"
)
func main() {
ldapclient := &ldapc.Client{
Protocol: ldapc.LDAP,
Host: "localhost",
Port: 389,
TLSConfig: nil,
Bind: &ldapc.AuthBind{
BindDN: "uid=user1,ou=People,dc=test,dc=com",
BindPassword: "admin",
BaseDN: "dc=test,dc=com",
Filter: "(&(objectClass=posixAccount)(uid=%s))",
},
}
username := "user2"
password := "user2"
entry, err := ldapclient.Authenticate(username, password)
if err != nil {
fmt.Printf("LDAP Authenticate failed: %v\n", err)
}
// Print all entry
fmt.Printf("%+v\n", entry)
// username and mail
fmt.Printf("username: %v\n", entry.GetAttributeValue("uid"))
fmt.Printf("mail: %v\n", entry.GetAttributeValue("mail"))
}
- Output:
username: user2
mail: [email protected]
In other cases Anonymous Bind, Direct Bind or Active Directory, example code ldapc_test.go.
-
Create OpenLDAP Server
-
See docker-ldapc
-
Client
$ go get -v github.com/sona-tar/go-ldapc
$ cd ${GOPATH}/src/github.com/sona-tar/go-ldapc/example
$ go run main.go
username: user2
mail: [email protected]
- Use (gogs/gogs - /gogs/modules/auth/ldap) implementation as a reference. Thanks gogs developers!!