ldap

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package ldap fournit un client LDAPS pour interagir avec Active Directory.

Opérations supportées :

  • Connexion sécurisée LDAPS (port 636, TLS)
  • Création d'utilisateur (sAMAccountName, userPrincipalName, displayName)
  • Définition du mot de passe (unicodePwd en UTF-16LE entre guillemets)
  • Activation du compte (userAccountControl = 512)
  • Désactivation du compte (userAccountControl = 514)
  • Suppression d'utilisateur
  • Recherche d'utilisateur

Contrainte : la définition du mot de passe via unicodePwd nécessite impérativement une connexion LDAPS (port 636) — LDAP simple ne fonctionne pas.

Chaque méthode retourne des erreurs explicites pour permettre le rollback lors du flux de création atomique (invitation).

Index

Constants

View Source
const (
	// UAC_NORMAL_ACCOUNT = 512 : compte utilisateur normal activé.
	UAC_NORMAL_ACCOUNT = 512

	// UAC_DISABLED_ACCOUNT = 514 : compte utilisateur désactivé (512 + 2).
	UAC_DISABLED_ACCOUNT = 514

	// Roles de provisioning LDAP utilises pour l'affectation automatique de groupe.
	ProvisionRoleUser    = "user"
	ProvisionRoleInviter = "inviter"
	ProvisionRoleAdmin   = "admin"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client encapsule la connexion LDAPS à Active Directory.

func New

func New(cfg config.LDAPConfig) *Client

New crée un nouveau client LDAP à partir de la configuration.

func (*Client) AddUserToGroup

func (c *Client) AddUserToGroup(userDN, groupRef string) error

AddUserToGroup ajoute un utilisateur à un groupe AD spécifique. groupRef peut être un DN complet (CN=...,DC=...) ou un nom simple de groupe.

func (*Client) Close

func (c *Client) Close()

Close ferme proprement la connexion LDAP persistante.

func (*Client) CreateUser

func (c *Client) CreateUser(username, displayName, email, password, role string) (string, error)

CreateUser crée un nouvel utilisateur dans l'Active Directory.

Paramètres :

  • username : nom de connexion (sAMAccountName)
  • displayName : nom affiché
  • email : adresse email (optionnel, chaîne vide si absent)
  • password : mot de passe en clair (sera encodé en UTF-16LE)

Le compte est créé EN ACTIVÉ (userAccountControl = 512).

Retourne le DN (Distinguished Name) de l'utilisateur créé. En cas d'erreur, aucun nettoyage n'est nécessaire côté LDAP (l'ADD est atomique).

func (*Client) DeleteUser

func (c *Client) DeleteUser(userDN string) error

DeleteUser supprime un utilisateur de l'AD par son DN.

Utilisé lors du rollback ou de la suppression admin.

func (*Client) DisableUser

func (c *Client) DisableUser(userDN string) error

DisableUser désactive un compte AD (userAccountControl = 514).

func (*Client) EnableUser

func (c *Client) EnableUser(userDN string) error

EnableUser active un compte AD (userAccountControl = 512).

func (*Client) FindUser

func (c *Client) FindUser(username string) (*UserEntry, error)

FindUser recherche un utilisateur LDAP via les attributs login compatibles en appliquant le filtre de recherche LDAP configure. Retourne nil si l'utilisateur n'est pas trouvé (pas d'erreur).

func (*Client) GetGroupMembers

func (c *Client) GetGroupMembers(groupDN string) ([]UserEntry, error)

GetGroupMembers récupère la liste de tous les utilisateurs membres d'un groupe LDAP.

func (*Client) IsUserAdmin

func (c *Client) IsUserAdmin(username string, user *UserEntry) (bool, error)

IsUserAdmin valide l'acces administrateur via LDAP Admin Filter. Si aucun filtre admin n'est configure, retourne false sans erreur.

func (*Client) ResetPassword

func (c *Client) ResetPassword(userDN, newPassword string) error

ResetPassword réinitialise le mot de passe d'un utilisateur dans l'AD.

Le mot de passe est encodé en UTF-16LE entre guillemets, comme requis par l'attribut unicodePwd d'Active Directory. Cette opération NÉCESSITE une connexion LDAPS (port 636).

func (*Client) ResolveUserAccess

func (c *Client) ResolveUserAccess(username string) (*UserEntry, bool, error)

ResolveUserAccess applique le filtre de recherche LDAP et retourne aussi si l'utilisateur est administrateur via le filtre administrateur LDAP.

func (*Client) TestConnection

func (c *Client) TestConnection() error

TestConnection vérifie la connectivité réseau + bind LDAP.

func (*Client) UpdateUserContact

func (c *Client) UpdateUserContact(userDN, email, phone string) error

UpdateUserContact met a jour les attributs de contact LDAP pour un utilisateur. Les attributs cibles sont:

  • mail
  • telephoneNumber/mobile (si un numero est fourni)

type UserEntry

type UserEntry struct {
	DN                string
	Username          string // Attribut identifiant resolu (sAMAccountName/uid/...)
	UID               string
	UsernameAttribute string
	DisplayName       string
	Email             string
	UPN               string // userPrincipalName
	UAC               string // userAccountControl
	IsDisabled        bool
}

UserEntry contient les attributs pertinents d'un utilisateur AD.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL