Я нашел решение.
Прежде всего, вам необходимо подключиться к сокету Unix. Обычно сокет располагается по пути /var/run/slapd/ldapi
.
Затем необходимо выполнить простую привязку с двумя изменениями:
- имя пользователя должно быть пустым
- необходимо указатьчто вы хотите использовать
sasl
аутентификация
pkt := ber.Encode(ber.ClassApplication, ber.TypeConstructed, ApplicationBindRequest, nil, "Bind Request")
pkt.AppendChild(ber.NewInteger(ber.ClassUniversal, ber.TypePrimitive, ber.TagInteger, 3, "Version"))
pkt.AppendChild(ber.NewString(ber.ClassUniversal, ber.TypePrimitive, ber.TagOctetString, "", "User Name"))
saslAuth := ber.Encode(ber.ClassContext, ber.TypeConstructed, 3, "", "authentication")
saslAuth.AppendChild(ber.NewString(ber.ClassUniversal, ber.TypePrimitive, ber.TagOctetString, "EXTERNAL", "SASL Mech"))
saslAuth.AppendChild(ber.NewString(ber.ClassUniversal, ber.TypePrimitive, ber.TagOctetString, "", "SASL Cred"))
pkt.AppendChild(saslAuth)
Это PR https://github.com/go-ldap/ldap/pull/232.