У меня есть сервер Debian, на котором работает OpenLDAP версии 2.4.31, и теперь я пытаюсь подключить свой сервер Mac OS X 10.9, чтобы я мог аутентифицировать существующих пользователей LDAP. Я успешно подключил их с помощью утилиты каталогов и сопоставил записи пользователей со значениями, возвращаемыми сервером. Я сделал следующие сопоставления:
User: inetOrgPerson
EmailAddress: mail
FirstName: givenName
LastName: sn
Password: userPassword
PrimaryGroupID: #5000
RealName: cn
RecordName: uid
UniqueID: uidNumber
GeneratedUID: mail
Я могу успешно пройти аутентификацию с помощью утилиты каталогов и служб, работающих в локальной сети, например Time Machine. Однако, когда я пытаюсь получить доступ к любой службе, доступной из Интернета, например к Wiki-серверу или Xcode-серверу, аутентификация не выполняется. Вот журнал моего OS X Server, когда я пытался войти в Wiki:
Nov 29 21:06:55 osx.example.org collabd[437]: [CSAuthService.m:315 11d8d000 +269ms] Digest did not validate
Nov 29 21:06:55 osx.example.org collabd[437]: [CSServiceDispatcher.m:260 11d8d000 +0ms] Caught exception "Invalid Credentials" [CSAuthBadDigest] executing [http]Request{AuthService.validateUsernameAndPasswordDigest:remember:(<<scrubbed>>)}
А вот второй журнал, когда я пытался войти на сервер Xcode:
Nov 29 21:23:27 osx.example.org collabd[437]: [CSAuthService.m:315 11b5a000 +95ms] Digest did not validate
Nov 29 21:23:27 osx.example.org collabd[437]: [CSServiceDispatcher.m:260 11b5a000 +0ms] Caught exception "Invalid Credentials" [CSAuthBadDigest] executing [http]Request{AuthService.sessionForDigest:remember:(Digest username="redacted",realm="osx.example.org",nonce="****",nc="*****",cnonce="***",qop="auth",algorithm=md5-sess,uri="/",response="***",0)}
Вроде как к серверу LDAP подключается, но зачем? Во всяком случае, вот журнал LDAP:
filter: (&(|(objectClass=inetOrgPerson))(|(uid=redacted)(cn=redacted)))
ber_scanf fmt ({M}}) ber:
...
bdb_dn2entry("dc=example,dc=org")
search_candidates: base="dc=example,dc=org" (0x00000001) scope=2
...
5298f51f => send_search_entry: conn 1001 dn="uid=redacted,ou=users,dc=example,dc=org"
ber_flush2: 183 bytes to sd 12
ldap_write: want=183, written=183
...
5298f51f <= send_search_entry: conn 1001 exit.
5298f51f send_ldap_result: conn=1001 op=3 p=3
5298f51f send_ldap_result: err=0 matched="" text=""
5298f51f send_ldap_response: msgid=4 tag=101 err=0
ber_flush2: 14 bytes to sd 12
ldap_write: want=14, written=14
0000: 30 0c 02 01 04 65 07 0a 01 00 04 00 04 00 0....e........
Насколько я могу судить, сервер OS X запрашивает у LDAP-сервера записи пользователей, но затем что-то на стороне OS X работает неправильно. Может ли кто-нибудь сказать мне, что мне нужно сделать, чтобы аутентификация работала? Может быть проблема в том, что «царство» кажется неправильным? Имя хоста сервера ldap - «example.org», а имя хоста сервера OSX - «osx.example.org». Если действительно проблема в области, как мне изменить ее с osx.example.org на example.org?
Я понимаю, что это старый вопрос, но у меня была такая же проблема, и я попал в этот пост в своих путешествиях. Если это поможет вам (или другим) и для потомков, вот что мне нужно было сделать, чтобы это исправить:
На сервере откройте файл WebConfigProperties.plist и измените атрибут RealmAuthType с Digest на Basic. По умолчанию файлы конфигурации должны находиться в / Library / Server / Web / Config / apache2 /.
Надеюсь это поможет!