La colonne tutorielle suivante de golang vous présentera comment connecter Ldap dans Golang. J'espère qu'elle sera utile aux amis dans le besoin !
Aujourd'hui, j'écris ici sur la façon dont Golang se connecte à ldap
Il existe des packages ldap dans golang que j'utilise
go get -u "gopkg.in/ldap.v2"
Mon environnement ldap :
<🎜. > rootdn : uid=admin,dc=wjq,dc=com mot de passe : openldapdn: dc=wjq,dc=com dc: wjq objectClass: top objectClass: domain dn: ou=Group,dc=wjq,dc=com ou: Group objectClass: top objectClass: organizationalUnit dn: ou=People,dc=wjq,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: uid=admin,dc=wjq,dc=com uid: admin objectClass: top objectClass: account
#组信息 dn: cn=test,ou=Group,dc=wjq,dc=com gidNumber: 1003 cn: test objectClass: posixGroup #用户信息 dn: uid=test,ou=People,dc=wjq,dc=com uidNumber: 1009 gidNumber: 1003 gecos: test homeDirectory: /home/test uid: test shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash shadowInactive: -1 shadowExpire: -1 shadowFlag: -1 objectClass: posixAccount objectClass: shadowAccount objectClass: account cn: test userPassword:: e1NTSEF9d053TWhYRTR4STJUUmpJWm5MTkF4VFlBTFhJdStaZ0Q= shadowLastChange: 17858
réseau : fait référence au réseau Protocole tcp, udp adresse : C'est l'adresse à connecter en couche inférieure et doit avoir un numéro de port
con, err := ldap.Dial("tcp", "127.0.0.1:389")
Bind(rootdn, password) (erreur)
berror := conn.Bind("uid=admin,dc=wjq,dc=com", "openldap")
, ldap fournit une structure de requête - ldap.NewSearchRequest, tant que nous remplissons les données puis appelons ldap.Search pour ajouter, ldap Fournissez une structure ajoutée -- ldap.NewAddRequest, remplissez les données, puis appelez ldap.Add
pour supprimer , ldap fournit une structure de suppression -- ldap.NewDelRequest, puis appelle ldap.Del Modification du mot de passe utilisateur, ldap fournit une structure pour modifier les mots de passe utilisateur -- ldap.NewPasswordModifyRequest, puis appelle ldap.PasswordModify C'est très unique, jetons un coup d'oeil : Requête du groupe d'utilisateurs NewSearchRequest :func NewSearchRequest( BaseDN string, Scope, DerefAliases, SizeLimit, TimeLimit int, TypesOnly bool, Filter string, Attributes []string, Controls []Control, ) *SearchRequest
srsql := ldap.NewSearchRequest("ou=Group,dc=wjq,dc=com", ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false, "(&(objectClass=posixGroup))", []string{"dn", "cn", "uid"}, nil)
Filtrer le groupe d'utilisateurs de test : (&(objectClass=posixGroup)(cn=test)) Filtrer l'utilisateur cn= test, ou uid=test (bien sûr baseDn est celui de l'utilisateur : "(|(&(objectClass=posixAccount)(cn=test))(&(objectClass=posixAccount)(uid=test)))"
Exécuter Recherchez et obtenez les résultats (dans cur.Entries) :cur, er := l.Search(srsql) if er != nil { log.Fatalln(er) } if (len(cur.Entries) > 0){ for _, item := range cur.Entries { cn := item.GetAttributeValue("cn") if cn == "" { cn = item.GetAttributeValue("uid") } fmt.Println(cn) } }
Voyons comment ajouter un utilisateur : NewAddRequestAjouter
Utilisateur : wujq Mot de passe : 123456 Répertoire personnel : / home /wujq Groupe auquel /wujq appartient : test (id=1003)1 Confirmez d'abord le nom d'utilisateur que je dois ajouter : uid=wujq,ou=People,dc=. wjq,dc=com 2. gidNumber est 10033 Parce que la valeur uidNumber est obligatoire, supposons que je la définisse sur 1010 (non utilisée par le système)<🎜. >Le code d'exécution est le suivant :
sql := ldap.NewAddRequest("uid=wujq,ou=People,dc=wjq,dc=com") sql.Attribute("uidNumber", []string{"1010"}) sql.Attribute("gidNumber", []string{"1003"}) sql.Attribute("userPassword", []string{"123456"}) sql.Attribute("homeDirectory", []string{"/home/wujq"}) sql.Attribute("cn", []string{"wujq"}) sql.Attribute("uid", []string{"wujq"}) sql.Attribute("objectClass", []string{"shadowAccount", "posixAccount", "account"}) er := ldapcon.Add(sql)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!