Documentation
¶
Overview ¶
Package ldap provides a simple ldap client to authenticate, retrieve basic information and groups for a user.
Index ¶
- type LDAPClient
- func (lc *LDAPClient) Authenticate(username, password string) (bool, map[string]string, error)
- func (lc *LDAPClient) Close()
- func (lc *LDAPClient) Connect() error
- func (lc *LDAPClient) FindUsers(search string) ([]map[string]string, error)
- func (lc *LDAPClient) GetGroupsOfUser(username string) ([]string, error)
- func (lc *LDAPClient) SearchUser(username string) (map[string]string, error)
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LDAPClient ¶
type LDAPClient struct {
Conn *ldap.Conn
Host string
Port int
UseSSL bool
BindDN string
BindPassword string
GroupFilter string // e.g. "(memberUid=%s)"
UserFilter string // e.g. "(uid=%s)"
Base string
Attributes []string
ServerName string
}
func (*LDAPClient) Authenticate ¶
Authenticate authenticates the user against the ldap backend
Example ¶
ExampleLDAPClient_Authenticate shows how a typical application can verify a login attempt
package main
import (
"log"
"github.com/jtblin/go-ldap-client"
)
func main() {
client := &ldap.LDAPClient{
Base: "dc=example,dc=com",
Host: "ldap.example.com",
Port: 389,
UseSSL: false,
BindDN: "uid=readonlysuer,ou=People,dc=example,dc=com",
BindPassword: "readonlypassword",
UserFilter: "(uid=%s)",
GroupFilter: "(memberUid=%s)",
Attributes: []string{"givenName", "sn", "mail", "uid"},
}
defer client.Close()
ok, user, err := client.Authenticate("username", "password")
if err != nil {
log.Fatalf("Error authenticating user %s: %+v", "username", err)
}
if !ok {
log.Fatalf("Authenticating failed for user %s", "username")
}
log.Printf("User: %+v", user)
}
Output:
func (*LDAPClient) Connect ¶
func (lc *LDAPClient) Connect() error
Connect connects to the ldap backend
func (*LDAPClient) FindUsers ¶
func (lc *LDAPClient) FindUsers(search string) ([]map[string]string, error)
func (*LDAPClient) GetGroupsOfUser ¶
func (lc *LDAPClient) GetGroupsOfUser(username string) ([]string, error)
GetGroupsOfUser returns the group for a user
Example ¶
ExampleLDAPClient_GetGroupsOfUser shows how to retrieve user groups
package main
import (
"log"
"github.com/jtblin/go-ldap-client"
)
func main() {
client := &ldap.LDAPClient{
Base: "dc=example,dc=com",
Host: "ldap.example.com",
Port: 389,
GroupFilter: "(memberUid=%s)",
}
defer client.Close()
groups, err := client.GetGroupsOfUser("username")
if err != nil {
log.Fatalf("Error getting groups for user %s: %+v", "username", err)
}
log.Printf("Groups: %+v", groups)
}
Output:
func (*LDAPClient) SearchUser ¶
func (lc *LDAPClient) SearchUser(username string) (map[string]string, error)
Click to show internal directories.
Click to hide internal directories.