19.10. ÐÑÑенÑиÑикаÑÐ¸Ñ LDAP #
ÐаннÑй меÑод аÑÑенÑиÑикаÑии ÑабоÑÐ°ÐµÑ ÑÑ
однÑм Ñ Ð¼ÐµÑодом password обÑазом, за иÑклÑÑением Ñого, ÑÑо он иÑполÑзÑÐµÑ LDAP как меÑод подÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑолÑ. LDAP иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÑ Â«Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ/паÑолÑ». ÐоÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñже ÑÑÑеÑÑвоваÑÑ Ð² базе даннÑÑ
до Ñого, как Ð´Ð»Ñ Ð°ÑÑенÑиÑикаÑии бÑÐ´ÐµÑ Ð¸ÑполÑзован LDAP.
ÐÑÑенÑиÑикаÑÐ¸Ñ LDAP Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ð² двÑÑ
ÑежимаÑ
. ÐеÑвÑй Ñежим назÑваеÑÑÑ Ð¿ÑоÑÑое ÑвÑзÑвание. Ð Ñ
оде аÑÑенÑиÑикаÑии ÑеÑÐ²ÐµÑ ÑвÑзÑваеÑÑÑ Ñ Ñ
аÑакÑеÑнÑм именем, ÑоÑÑавленнÑм ÑледÑÑÑим обÑазом: prefix username suffix. ÐбÑÑно, паÑамеÑÑ prefix иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ cn= или DOMAIN\ в ÑÑеде Active Directory. suffix иÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾ÑÑавÑейÑÑ ÑаÑÑи DN или в ÑÑеде, оÑлиÑной Ð¾Ñ Active Directory.
Ðо вÑоÑом Ñежиме, коÑоÑÑй Ð¼Ñ Ð½Ð°Ð·Ñваем поиÑк+ÑвÑзÑвание, ÑеÑÐ²ÐµÑ ÑнаÑала ÑвÑзÑваеÑÑÑ Ñ ÐºÐ°Ñалогом LDAP Ñ Ð¿ÑедопÑеделÑннÑм именем полÑзоваÑÐµÐ»Ñ Ð¸ паÑолем, ÑказаннÑм в ldapbinddn и ldapbindpasswd, и вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк полÑзоваÑелÑ, пÑÑаÑÑегоÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ Ðº базе даннÑÑ
. ÐÑли Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸ паÑÐ¾Ð»Ñ Ð½Ðµ опÑеделенÑ, ÑеÑÐ²ÐµÑ Ð¿ÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ ÐºÐ°Ñалогом анонимно. ÐоиÑк вÑполнÑеÑÑÑ Ð² поддеÑеве ldapbasedn, пÑи ÑÑом пÑовеÑÑÑÑÑ ÑоÑное ÑооÑвеÑÑÑвие имени полÑзоваÑÐµÐ»Ñ Ð°ÑÑибÑÑÑ ldapsearchattribute. Ðак ÑолÑко пÑи поиÑке наÑ
одиÑÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑеÑÐ²ÐµÑ Ð·Ð°Ð½Ð¾Ð²Ð¾ ÑвÑзÑваеÑÑÑ Ñ ÐºÐ°Ñалогом Ñже как ÑÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, Ñ Ð¿Ð°Ñолем, пеÑеданнÑм клиенÑом, ÑÑÐ¾Ð±Ñ ÑдоÑÑовеÑиÑÑÑÑ, ÑÑо ÑÑÑÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÐºÐ¾ÑÑекÑна. ÐÑÐ¾Ñ Ð¶Ðµ Ñежим иÑполÑзÑеÑÑÑ Ð² ÑÑ
емаÑ
LDAP-аÑÑенÑиÑикаÑии в дÑÑгом пÑогÑаммном обеÑпеÑении, напÑимеÑ, в pam_ldap и mod_authnz_ldap в Apache. ÐаннÑй ваÑÐ¸Ð°Ð½Ñ Ð´Ð°ÑÑ Ð±Ð¾Ð»ÑÑе гибкоÑÑи в вÑбоÑе ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑов полÑзоваÑелей, но пÑи ÑÑом ÑеÑвеÑÑ LDAP оÑпÑавлÑÑÑÑÑ Ð´Ð²Ð° дополниÑелÑнÑÑ
запÑоÑа.
Ð Ð¾Ð±Ð¾Ð¸Ñ ÑÐµÐ¶Ð¸Ð¼Ð°Ñ Ð¸ÑполÑзÑÑÑÑÑ ÑледÑÑÑие паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии:
ldapserverÐмена и IP-адÑеÑа LDAP-ÑеÑвеÑов Ð´Ð»Ñ ÑвÑзи. Ðожно ÑказаÑÑ Ð½ÐµÑколÑко ÑеÑвеÑов, ÑазделÑÑ Ð¸Ñ Ð¿Ñобелами.
ldapportÐÐ¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа Ð´Ð»Ñ ÑвÑзи Ñ LDAP-ÑеÑвеÑом. ÐÑли поÑÑ Ð½Ðµ Ñказан, иÑполÑзÑеÑÑÑ ÑÑÑановленнÑй по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки LDAP.
ldapschemeÐнаÑение
ldapsвÑбиÑÐ°ÐµÑ Ð¿ÑоÑокол LDAPS. ÐÑо неÑÑандаÑÑнÑй ÑпоÑоб иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ LDAP повеÑÑ SSL, поддеÑживаемÑй некоÑоÑÑми ÑеÑвеÑами LDAP. ÐлÑÑеÑнаÑивнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð¿Ð°ÑамеÑÑldaptls.ldaptlsÐнаÑение 1 вклÑÑÐ°ÐµÑ TLS-ÑиÑÑование Ð´Ð»Ñ Ð·Ð°ÑиÑÑ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Postgres Pro Ñ LDAP-ÑеÑвеÑом. ÐÑи ÑÑом иÑполÑзÑеÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ
StartTLS, опиÑÐ°Ð½Ð½Ð°Ñ Ð² RFC 4513. ÐлÑÑеÑнаÑивнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð¿Ð°ÑамеÑÑldapscheme.
ÐамеÑÑÑе, ÑÑо пÑи иÑполÑзовании ldapscheme или ldaptls ÑиÑÑÑеÑÑÑ ÑолÑко ÑÑаÑик Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом Postgres Pro и ÑеÑвеÑом LDAP. Соединение Ð¼ÐµÐ¶Ð´Ñ ÑеÑвеÑом Postgres Pro и клиенÑом оÑÑаÑÑÑÑ Ð½ÐµÐ·Ð°ÑиÑÑованнÑм, еÑли ÑолÑко и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ не вклÑÑÑн SSL.
СледÑÑÑие паÑамеÑÑÑ Ð¸ÑполÑзÑÑÑÑÑ ÑолÑко в Ñежиме пÑоÑÑого ÑвÑзÑваниÑ:
ldapprefixÐÑа ÑÑÑока подÑÑавлÑеÑÑÑ Ð¿ÐµÑед именем полÑзоваÑÐµÐ»Ñ Ð²Ð¾ вÑÐµÐ¼Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ DN Ð´Ð»Ñ ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ñи аÑÑенÑиÑикаÑии в Ñежиме пÑоÑÑого ÑвÑзÑваниÑ.
ldapsuffixÐÑа ÑÑÑока ÑазмеÑаеÑÑÑ Ð¿Ð¾Ñле имени полÑзоваÑÐµÐ»Ñ Ð²Ð¾ вÑÐµÐ¼Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ DN Ð´Ð»Ñ ÑвÑзÑваниÑ, пÑи аÑÑенÑиÑикаÑии в Ñежиме пÑоÑÑого ÑвÑзÑваниÑ.
СледÑÑÑие паÑамеÑÑÑ Ð¸ÑполÑзÑÑÑÑÑ ÑолÑко в Ñежиме поиÑк+ÑвÑзÑвание:
ldapbasednÐоÑÐ½ÐµÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° DN Ð´Ð»Ñ Ð½Ð°Ñала поиÑка полÑзоваÑÐµÐ»Ñ Ð¿Ñи аÑÑенÑиÑикаÑии в Ñежиме поиÑк+ÑвÑзÑвание.
ldapbinddnDN полÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ ÑвÑзи Ñ ÐºÐ°Ñалогом пÑи вÑполнении поиÑка в Ñ Ð¾Ð´Ðµ аÑÑенÑиÑикаÑии в Ñежиме поиÑк+ÑвÑзÑвание.
ldapbindpasswdÐаÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ñ ÐºÐ°Ñалогом пÑи вÑполнении поиÑка в Ñ Ð¾Ð´Ðµ аÑÑенÑиÑикаÑии в Ñежиме поиÑк+ÑвÑзÑвание.
ldapsearchattributeÐÑÑибÑÑ Ð´Ð»Ñ ÑооÑнеÑÐµÐ½Ð¸Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ полÑзоваÑÐµÐ»Ñ Ð² Ñ Ð¾Ð´Ðµ аÑÑенÑиÑикаÑии поиÑк+ÑвÑзÑвание. ÐÑли аÑÑибÑÑ Ð½Ðµ Ñказан, бÑÐ´ÐµÑ Ð¸ÑполÑзован аÑÑибÑÑ
uid.ldapsearchfilterФилÑÑÑ Ð¿Ð¾Ð¸Ñка, иÑполÑзÑемÑй Ð´Ð»Ñ Ð°ÑÑенÑиÑикаÑии в Ñежиме поиÑк+ÑвÑзÑвание. ÐÑ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ
$usernameв нÑм бÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÑÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ полÑзоваÑелÑ. ÐÑо позволÑÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ Ð±Ð¾Ð»ÐµÐµ гибкие ÑилÑÑÑÑ Ð¿Ð¾Ð¸Ñка, Ñемldapsearchattribute.
СледÑÑÑий паÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð² каÑеÑÑве алÑÑеÑнаÑивного ÑпоÑоба запиÑи некоÑоÑÑÑ Ð¿ÐµÑеÑиÑленнÑÑ Ð²ÑÑе паÑамеÑÑов LDAP в более компакÑном и ÑÑандаÑÑном виде:
ldapurlÐдÑÐµÑ LDAP по ÑÑандаÑÑÑ RFC 4516. ФоÑÐ¼Ð°Ñ Ð°Ð´ÑеÑа Ñаков:
ldap[s]://
ÑеÑвеÑ[:поÑÑ]/basedn[?[аÑÑибÑÑ][?[scope][?[ÑилÑÑÑ]]]]ÐдеÑÑ
scopeпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñениеbase,oneилиsub(обÑÑно поÑледнее). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑbase, ÑÑо не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ пÑи Ñаком пÑименении. РкаÑеÑÑвеаÑÑибÑÑÐ°Ð¼Ð¾Ð¶ÐµÑ ÑказÑваÑÑÑÑ Ð¾Ð´Ð¸Ð½ аÑÑибÑÑ; в ÑÑом ÑлÑÑае он иÑполÑзÑеÑÑÑ ÐºÐ°Ðº знаÑение паÑамеÑÑаldapsearchattribute. ÐÑлиаÑÑибÑÑне Ñказан, в каÑеÑÑве знаÑениÑldapsearchfilterÐ¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑÑилÑÑÑ.Ð¡Ñ ÐµÐ¼Ð° адÑеÑа
ldapsвÑбиÑÐ°ÐµÑ Ð´Ð»Ñ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ LDAP-подклÑÑений повеÑÑ SSL меÑод LDAPS, ÑÑо ÑавнознаÑно ÑказаниÑldapscheme=ldaps. ÐÐ»Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑиÑÑÐ¾Ð²Ð°Ð½Ð¸Ñ LDAP Ñ Ð¸ÑполÑзованием опеÑаÑииStartTLSиÑполÑзÑйÑе обÑÑнÑÑ ÑÑ ÐµÐ¼Ñ URLldapи ÑкажиÑе паÑамеÑÑldaptlsв дополнение кldapurl.ÐÐ»Ñ Ð½ÐµÐ°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð³Ð¾ ÑвÑзÑваниÑ
ldapbinddnиldapbindpasswdÐ´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÐºÐ°Ð·Ð°Ð½Ñ ÐºÐ°Ðº ÑазделÑнÑе паÑамеÑÑÑ.РнаÑÑоÑÑее вÑÐµÐ¼Ñ URL-адÑеÑа LDAP поддеÑживаÑÑÑÑ ÑолÑко Ñ OpenLDAP и не поддеÑживаÑÑÑÑ Ð² Windows.
ÐелÑÐ·Ñ Ð¿ÑÑаÑÑ Ð¿Ð°ÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии Ð´Ð»Ñ Ñежима пÑоÑÑого ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°ÑамеÑÑами Ð´Ð»Ñ Ñежима поиÑк+ÑвÑзÑвание, ÑÑо оÑибка. ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð¿Ð°ÑамеÑÑ ldapurl в Ñежиме пÑоÑÑого ÑвÑзÑваниÑ, адÑÐµÑ Ð½Ðµ должен ÑодеÑжаÑÑ basedn или ÑлеменÑÑ Ð·Ð°Ð¿ÑоÑа.
Ð Ñежиме поиÑк+ÑвÑзÑвание поиÑк Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð»Ð¸Ð±Ð¾ по Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð°ÑÑибÑÑÑ, ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² ldapsearchattribute, либо по пÑоизволÑÐ½Ð¾Ð¼Ñ ÑилÑÑÑÑ Ð¿Ð¾Ð¸Ñка, Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² ldapsearchfilter. Указание ldapsearchattribute=foo ÑавнознаÑно ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ldapsearchfilter="(foo=$username)". ÐÑли не Ñказан ни один паÑамеÑÑ, по ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑÑÑ ldapsearchattribute=uid.
ÐÑли Postgres Pro бÑл ÑкомпилиÑован Ñ OpenLDAP в каÑеÑÑве клиенÑÑкой библиоÑеки LDAP, паÑамеÑÑ ldapserver Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑен. Ð ÑÑом ÑлÑÑае за ÑпиÑком имÑн ÑеÑвеÑов и поÑÑов ÑеÑÐ²ÐµÑ Ð¾Ð±ÑаÑаеÑÑÑ Ð² DNS, к SRV-запиÑи (по ÑÑандаÑÑÑ RFC 2782) Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ _ldap._tcp.DOMAIN, где DOMAIN извлекаеÑÑÑ Ð¸Ð· ldapbasedn.
ÐÑо пÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии LDAP Ð´Ð»Ñ Ð¿ÑоÑÑого ÑвÑзÑваниÑ:
host ... ldap ldapserver=ldap.example.net ldapprefix="cn=" ldapsuffix=", dc=example, dc=net"
Ðогда запÑаÑиваеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к ÑеÑвеÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
в каÑеÑÑве полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
someuser, Postgres Pro пÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ LDAP-ÑеÑвеÑом, иÑполÑзÑÑ DN cn=someuser, dc=example, dc=net и паÑолÑ, пÑедоÑÑавленнÑй клиенÑом. ÐÑли ÑÑо подклÑÑение ÑдалоÑÑ, Ñо доÑÑÑп к базе даннÑÑ
бÑÐ´ÐµÑ Ð¾ÑкÑÑÑ.
ÐÑо дÑÑгой пÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии Ð´Ð»Ñ Ð¿ÑоÑÑого ÑвÑзÑваниÑ, в коÑоÑом иÑполÑзÑеÑÑÑ ÑÑ ÐµÐ¼Ð° LDAPS и Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкого поÑÑа, запиÑаннÑй в виде URL:
host ... ldap ldapurl="ldaps://ldap.example.net:49151" ldapprefix="cn=" ldapsuffix=", dc=example, dc=net"
ÐÑо ÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ компакÑно, Ñем ÑказÑваÑÑ ldapserver, ldapscheme и ldapport оÑделÑно.
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии Ð´Ð»Ñ Ñежима поиÑк+ÑвÑзÑвание:
host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapsearchattribute=uid
Ðогда запÑаÑиваеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к ÑеÑвеÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
в каÑеÑÑве полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
someuser, Postgres Pro пÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ ÑеÑвеÑом LDAP анонимно (поÑколÑÐºÑ ldapbinddn не бÑл Ñказан), вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк Ð´Ð»Ñ (uid=someuser) под Ñказанной базой DN. ÐÑли запиÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°, пÑоводиÑÑÑ Ð¿Ð¾Ð¿ÑÑка ÑвÑзÑвание Ñ Ð¸ÑполÑзованием найденной инÑоÑмаÑии и паÑолем, пÑедоÑÑавленнÑм клиенÑом. ÐÑли вÑоÑÐ°Ñ Ð¿Ð¾Ð¿ÑÑка ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ð¿ÑоÑ
Ð¾Ð´Ð¸Ñ ÑÑпеÑно, пÑедоÑÑавлÑеÑÑÑ Ð´Ð¾ÑÑÑп к базе даннÑÑ
.
ÐÑÐ¸Ð¼ÐµÑ Ñой же конÑигÑÑаÑии Ð´Ð»Ñ Ñежима поиÑк+ÑвÑзÑвание, но запиÑанной в виде URL:
host ... ldap ldapurl="ldap://ldap.example.net/dc=example,dc=net?uid?sub"
Такой URL-ÑоÑÐ¼Ð°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¸ дÑÑгим пÑогÑаммнÑм обеÑпеÑением, поддеÑживаÑÑим аÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ пÑоÑÐ¾ÐºÐ¾Ð»Ñ LDAP, поÑÑÐ¾Ð¼Ñ ÑаÑпÑоÑÑÑанÑÑÑ ÑакÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð»ÐµÐ³Ñе.
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии поиÑк+ÑвÑзÑвание, в коÑоÑом ldapsearchfilter иÑполÑзÑеÑÑÑ Ð²Ð¼ÐµÑÑо ldapsearchattribute Ð´Ð»Ñ Ð¿ÑоÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°ÑÑенÑиÑикаÑии по иденÑиÑикаÑоÑÑ Ð¸Ð»Ð¸ поÑÑÐ¾Ð²Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ:
host ... ldap ldapserver=ldap.example.net ldapbasedn="dc=example, dc=net" ldapsearchfilter="(|(uid=$username)(mail=$username))"
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии поиÑк+ÑвÑзÑвание, в коÑоÑом иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð¸Ñк SRV-запиÑи в DNS Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑеÑвеÑа и поÑÑа ÑлÑÐ¶Ð±Ñ LDAP в домене example.net:
host ... ldap ldapbasedn="dc=example,dc=net"
ÐодÑказка
ÐоÑколÑÐºÑ LDAP ÑаÑÑо пÑименÑÐµÑ Ð·Ð°Ð¿ÑÑÑе и пÑÐ¾Ð±ÐµÐ»Ñ Ð´Ð»Ñ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ ÑаÑÑей DN, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ иÑполÑзоваÑÑ ÐºÐ°Ð²ÑÑки пÑи опÑеделении знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов, как показано в наÑÐ¸Ñ Ð¿ÑимеÑÐ°Ñ .
19.10.1. РекомендаÑии по наÑÑÑойке обÑÐ¸Ñ LDAP-ÑеÑвеÑов #
ЧÑÐ¾Ð±Ñ Ð½Ð°ÑÑÑоиÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ LDAP на ÑеÑвеÑе Postgres Pro, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ ÑледÑÑÑие ÑÑебованиÑ:
СеÑÐ²ÐµÑ Postgres Pro должен имеÑÑ Ð´Ð¾ÑÑÑп к LDAP-ÑеÑвеÑÑ.
ÐапиÑÑ Ð¾ меÑоде аÑÑенÑиÑикаÑии LDAP должна бÑÑÑ Ð¿ÐµÑвой по ÑпиÑÐºÑ Ð² Ñайле конÑигÑÑаÑии
pg_hba.confна ÑеÑвеÑе Postgres Pro.ÐÑли аÑÑенÑиÑикаÑÐ¸Ñ LDAP наÑÑÑоена Ñ Ð¸ÑполÑзованием паÑамеÑÑа
ldapbinddn, Ñо ÑооÑвеÑÑÑвÑÑÑий DN должен Ñже ÑÑÑеÑÑвоваÑÑ Ð½Ð° LDAP-ÑеÑвеÑе.ÐÑли аÑÑенÑиÑикаÑÐ¸Ñ LDAP наÑÑÑоена Ñ Ð¸ÑполÑзованием паÑамеÑÑа
ldapsearchfilterÐ´Ð»Ñ ÑилÑÑÑаÑии полÑзоваÑелей пÑÑÑм пÑовеÑки Ð¸Ñ ÑленÑÑва в гÑÑÐ¿Ð¿Ð°Ñ , Ñо ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð³ÑÑппа должна Ñже ÑÑÑеÑÑвоваÑÑ Ð½Ð° LDAP-ÑеÑвеÑе.
ХоÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе LDAP-ÑеÑвеÑÑ (напÑимеÑ, FreeIPA) по ÑмолÑÐ°Ð½Ð¸Ñ ÑазÑеÑаÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ðµ ÑвÑзÑвание (anonymous binding) в Ñежиме search+bind, дÑÑгие (напÑимеÑ, ALD Pro) ÑÑого не делаÑÑ. Ð ÑелÑÑ
безопаÑноÑÑи не ÑекомендÑеÑÑÑ ÑазÑеÑаÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ðµ ÑвÑзÑвание на лÑбом LDAP-ÑеÑвеÑе.
ÐÑимеÑание
Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ALD Pro 2.4.0 или вÑÑе.
ÐÑимеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ Ð·Ð°Ð¿Ð¸Ñей, пÑиведÑннÑе ниже, ÑовмеÑÑÐ¸Ð¼Ñ Ñ ÑеÑвеÑами LDAP FreeIPA и ALD Pro.
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии LDAP Ñ Ð¸ÑполÑзованием пÑоÑÑого ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ (simple-bind):
host ... ldap ldapserver=ldap.example.net \
ldapport=389 \
ldapbasedn="cn=users,cn=accounts,dc=example,dc=net"
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии LDAP Ñ Ð¸ÑполÑзованием меÑода search+bind:
host ... ldap ldapserver=ldap.example.net \
ldapport=389 \
ldapbasedn="cn=users,cn=accounts,dc=example,dc=net" \
ldapbinddn="uid=pgpro,cn=users,cn=accounts,dc=example,dc=net" \
ldapbindpasswd="<pgpro password>" \
ldapsearchattribute=uid
ÐÑи запÑоÑе на подклÑÑение к базе даннÑÑ
Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ someuser Postgres Pro попÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ LDAP-ÑеÑвеÑом Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ pgpro и вÑполниÑÑ Ð¿Ð¾Ð¸Ñк запиÑи (uid=someuser) в Ñказанном базовом DN. ÐÑли ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°, ÑеÑÐ²ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
попÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ LDAP, иÑполÑзÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñе даннÑе и паÑолÑ, пÑедоÑÑавленнÑй клиенÑом. ÐÑли вÑоÑое подклÑÑение бÑÐ´ÐµÑ ÑÑпеÑнÑм, доÑÑÑп к базе даннÑÑ
бÑÐ´ÐµÑ Ð¿ÑедоÑÑавлен.
ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии LDAP Ñ Ð¸ÑполÑзованием меÑода search+bind, где пÑименÑеÑÑÑ Ð¿Ð°ÑамеÑÑ ldapsearchfilter Ð´Ð»Ñ ÑилÑÑÑаÑии полÑзоваÑелей, ÑвлÑÑÑиÑ
ÑÑ Ñленами гÑÑÐ¿Ð¿Ñ pgpro_access:
host ... ldap ldapserver=ldap.example.net \
ldapport=389 \
ldapbasedn="cn=users,cn=accounts,dc=example,dc=net" \
ldapbinddn="uid=pgpro,cn=users,cn=accounts,dc=example,dc=net" \
ldapbindpasswd="<pgpro password>" \
ldapsearchfilter="(&(objectClass=person)(uid=$username)(memberOf=cn=pgpro_access,cn=groups,cn=accounts,dc=example,dc=net))"
ÐÑи запÑоÑе на подклÑÑение к базе даннÑÑ
Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ someuser Postgres Pro попÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ LDAP-ÑеÑвеÑом Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ pgpro и вÑполниÑÑ Ð¿Ð¾Ð¸Ñк запиÑи (uid=someuser) в Ñказанном базовом DN в ÑооÑвеÑÑÑвии Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм ÑилÑÑÑом поиÑка. Ð ÑÑом пÑимеÑе полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ñленом гÑÑÐ¿Ð¿Ñ pgpro_access ÑоглаÑно ÑилÑÑÑÑ. ÐÑли ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð°, ÑеÑÐ²ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
попÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ LDAP, иÑполÑзÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñе даннÑе и паÑолÑ, пÑедоÑÑавленнÑй клиенÑом. ÐÑли вÑоÑое подклÑÑение бÑÐ´ÐµÑ ÑÑпеÑнÑм, доÑÑÑп к базе даннÑÑ
бÑÐ´ÐµÑ Ð¿ÑедоÑÑавлен.