Теперь официальные документы говорят, что если аутентификация на первом сервере не пройдена, он попытается сделать это на втором.Однако, похоже, что это не так с моим скриптом аутентификации.
Поведение, которое вы описываете, было введено как решение для ошибки ZF-409 .Чтобы заставить его работать так, как вы хотите, просто задайте другое значение accountDomainName (или accountDomainNameShort) в параметрах вашего 2 сервера LDAP:
ldap.admin.accountDomainName = admin.domain
ldap.admin.accountDomainNameShort = admin
ldap.readonly.accountDomainName = readonly.domain
ldap.readonly.accountDomainNameShort = readonly
Если вы входите в систему с использованием действительного пользователя «только для чтения», он не сможет войти в системув качестве администратора, но он войдет в систему только для чтения.Zend_Auth_Result будет выглядеть примерно так:
object(Zend_Auth_Result)#159 (3) {
["_code":protected] => int(1)
["_identity":protected] => string(26) "readonly\username"
["_messages":protected] => array(6) {
[0] => string(0) ""
[1] => string(0) ""
[2] => string(312) "host=host,useSsl=1,accountDomainName=admin.domain,accountDomainNameShort=admin,accountCanonicalForm=3,baseDn=dc=mydc,dc=de,bindRequiresDn=1,useStartTls=1,group=ama_ro,groupDn=cn=ama_ro,ou=groups,dc=mydc,dc=de,groupAttr=cn,groupFilter=objectClass=groupOfNames,memberAttr=member"
[3] => string(142) "Failed to verify group membership with (&(&(cn=admin)(member=youruserDN))(yourfilter))"
[4] => string(310) "host=host,useSsl=1,accountDomainName=readonly.domain,accountDomainNameShort=readonly,accountCanonicalForm=3,baseDn=dc=mydc,dc=de,bindRequiresDn=1,useStartTls=1,group=ama_ro,groupDn=cn=ama_ro,ou=groups,dc=mydc,dc=de,groupAttr=cn,groupFilter=objectClass=groupOfNames,memberAttr=member"
[5] => string(52) "readonly\username authentication successful"
}
}
После того, как вы получите $login->isValid()
, просто выполните $login->getIdentity()
, и вы получите значение accountDomainNameShort вместе с username предоставляется.