Nutzer einrichten

11/08/2008 - 16:10 von Mario | Report spam
Sehr geehrte Frau Lenning!

Mein Name ist Mario Frost, ich bin Mitarbeiter im URZ der TU Bergakadmie
Freiberg.
Ich habe Ihre Adresse im Internet auf der Seite
http://www.hochschulverwaltung.de/n...ontakt.htm
gefunden. Ich hoffe, dass ich in Ihnen den richtigen Ansprechpartner für die
Lösung meines
Problemes gefunden habe.

Folgende Situation:

Wir haben einen Win2003-Server mit AD und Zertifikaten.
Ziel ist es, über php-Scripte, die auf einem externen Web-Server laufen,
Nutzeraccounts anzulegen. Dabei muss man, soweit ich das verstanden habe,
so vorgehen:
- Nutzeraccount anlegen (es wird kein Passwort vergeben)
- userAccountControl-Einstellungen aendern auf: "UF_NORMAL_ACCOUNT",
"UF_ACCOUNTDISABLE"
und "UF_PASSWD_NOTREQD"
- Passwort setzen
- und anschliessend die userAccountControl wieder àndern: UF_NORMAL_ACCOUNT

Das Anlegen der Nutzer und das Ändern der userAccountControl-Einstellungen
funktioniert.
Aber wenn ich das Passwort setzen will, kommt eine Fehlermeldung (siehe
unten).

(Übrigens kommt dieselbe Fehlermeldung auch, wenn ich ein Zertifikat
verwende, welches von
der PCA zertifiziert worden ist. Alle übergeordneten Zertifikate sind auf
dem AD-Server installiert.).

Im Anschluss ist das php-Script und die Fehlermeldung zu finden.


Ich würde mich sehr freuen, wenn Sie mir bei diesem Problem helfen könnten!

Mit freundlichen Grüßen!

Mario Frost
Universitàtsrechenzentrum
Technische Universitàt Bergakademie Freiberg


php-Script:

#!/usr/bin/php -q
<?php

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$ldaphost = "ldap://pc43.hrzpool.tu-freiberg.de";
$base_dn = "OU=Mitarbeiter,DC=adtest,DC=tu-freiberg,DC=de";
$ldaprdn = 'CN=Administrator,CN=Users,DC=adtest,DC=tu-freiberg,DC=de';
$ldappass = 'ehkpdg=!'; // entsprechendes password

# AccountControl-Attribute definieren
define("UF_ACCOUNTDISABLE", "0x0002");
define("UF_PASSWD_NOTREQD", "0x0020");
define("UF_NORMAL_ACCOUNT", "0x0200");
#
#
# 1. Create a user, with no password, and userAccountControl set to
# "Normal Account", "Account Disabled" and "Password not Required".
# 2. Set the password and change the userAccountControl attribute to
# "Normal Account" and whatever other options, such as User Must
# Change Password at Next Logon

echo "Verbindung ...";
$ds=ldap_connect($ldaphost);
echo "Ergebnis der Verbindung: ".$ds."";
ldap_start_tls($ds);

if ($ds) {
echo "Bindung ...";
$r = ldap_bind($ds, $ldaprdn, $ldappass);
echo "Ergebnis der Bindung ".$r."";
# $replace['userAccountControl'] = 0x222; # funktioniert, erstmal
auskommentiert
$replace['unicodePwd'] = "\'Passw_98\'";
$sr=ldap_mod_replace($ds,
"cn=prak20,ou=mitarbeiter,dc=adtest,dc=tu-freiberg,dc=de",$replace);

echo "rueckkehrwerte fuer ldap_replace:";
var_dump($sr);
var_dump(ldap_error($ds));
var_dump(ldap_errno($ds));

echo "Verbindung schließen";
ldap_close($ds);

} else {
echo "Verbindung zum LDAP Server nicht möglich";
}
?>

-
Fehlermeldung:

ldap_new_socket: 4
ldap_prepare_socket: 4
ldap_connect_to_host: Trying 139.20.66.186:389
ldap_connect_timeout: fd: 4 tm: -1 async: 0
ldap_open_defconn: successful
ldap_send_server_request
ldap_result ld 0x83b73b8 msgid 1
ldap_chkResponseList ld 0x83b73b8 msgid 1 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
wait4msg ld 0x83b73b8 msgid 1 (infinite timeout)
wait4msg continue ld 0x83b73b8 msgid 1 all 1
** ld 0x83b73b8 Connections:
* host: pc43.hrzpool.tu-freiberg.de port: 389 (default)
refcnt: 2 status: Connected
last used: Thu May 22 15:30:05 2008

** ld 0x83b73b8 Outstanding Requests:
* msgid 1, origid 1, status InProgress
outstanding referrals 0, parent count 0
** ld 0x83b73b8 Response Queue:
Empty
ldap_chkResponseList ld 0x83b73b8 msgid 1 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
ldap_int_select
read1msg: ld 0x83b73b8 msgid 1 all 1
read1msg: ld 0x83b73b8 msgid 1 message type extended-result
new result: res_errno: 0, res_error: <>, res_matched: <>
read1msg: ld 0x83b73b8 0 new referrals
read1msg: mark request completed, ld 0x83b73b8 msgid 1
request done: ld 0x83b73b8 msgid 1
res_errno: 0, res_error: <>, res_matched: <>
ldap_free_request (origid 1, msgid 1)
ldap_free_connection 0 1
ldap_free_connection: refcnt 1
ldap_parse_extended_result
ldap_parse_result
ldap_msgfree
TLS trace: SSL_connect:before/connect initialization
TLS trace: SSL_connect:SSLv2/v3 write client hello A
TLS trace: SSL_connect:SSLv3 read server hello A
TLS certificate verification: depth: 0, err: 20, subject:
/CN=pc43.adtest.tu-freiberg.de, issuer:
/DC=de/DC=tu-freiberg/DC=adtest/CN=ads-ca
TLS certificate verification: Error, unable to get local issuer certificate
TLS certificate verification: depth: 0, err: 27, subject:
/CN=pc43.adtest.tu-freiberg.de, issuer:
/DC=de/DC=tu-freiberg/DC=adtest/CN=ads-ca
TLS certificate verification: Error, certificate not trusted
TLS certificate verification: depth: 0, err: 21, subject:
/CN=pc43.adtest.tu-freiberg.de, issuer:
/DC=de/DC=tu-freiberg/DC=adtest/CN=ads-ca
TLS certificate verification: Error, unable to verify the first certificate
TLS trace: SSL_connect:SSLv3 read server certificate A
TLS trace: SSL_connect:SSLv3 read server certificate request A
TLS trace: SSL_connect:SSLv3 read server done A
TLS trace: SSL_connect:SSLv3 write client certificate A
TLS trace: SSL_connect:SSLv3 write client key exchange A
TLS trace: SSL_connect:SSLv3 write change cipher spec A
TLS trace: SSL_connect:SSLv3 write finished A
TLS trace: SSL_connect:SSLv3 flush data
TLS trace: SSL_connect:SSLv3 read finished A
TLS trace: SSL3 alert write:warning:bad certificate
TLS: unable to get peer certificate.
Bindung ...
ldap_bind_s
ldap_simple_bind_s
ldap_sasl_bind_s
ldap_sasl_bind
ldap_send_initial_request
ldap_send_server_request
ldap_result ld 0x83b73b8 msgid 2
ldap_chkResponseList ld 0x83b73b8 msgid 2 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
wait4msg ld 0x83b73b8 msgid 2 (infinite timeout)
wait4msg continue ld 0x83b73b8 msgid 2 all 1
** ld 0x83b73b8 Connections:
* host: pc43.hrzpool.tu-freiberg.de port: 389 (default)
refcnt: 2 status: Connected
last used: Thu May 22 15:30:05 2008

** ld 0x83b73b8 Outstanding Requests:
* msgid 2, origid 2, status InProgress
outstanding referrals 0, parent count 0
** ld 0x83b73b8 Response Queue:
Empty
ldap_chkResponseList ld 0x83b73b8 msgid 2 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
ldap_int_select
read1msg: ld 0x83b73b8 msgid 2 all 1
read1msg: ld 0x83b73b8 msgid 2 message type bind
new result: res_errno: 0, res_error: <>, res_matched: <>
read1msg: ld 0x83b73b8 0 new referrals
read1msg: mark request completed, ld 0x83b73b8 msgid 2
request done: ld 0x83b73b8 msgid 2
res_errno: 0, res_error: <>, res_matched: <>
ldap_free_request (origid 2, msgid 2)
ldap_free_connection 0 1
ldap_free_connection: refcnt 1
ldap_parse_result
ldap_msgfree
Ergebnis der Bindung 1
ldap_modify_ext
ldap_send_initial_request
ldap_send_server_request
ldap_result ld 0x83b73b8 msgid 3
ldap_chkResponseList ld 0x83b73b8 msgid 3 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
wait4msg ld 0x83b73b8 msgid 3 (infinite timeout)
wait4msg continue ld 0x83b73b8 msgid 3 all 1
** ld 0x83b73b8 Connections:
* host: pc43.hrzpool.tu-freiberg.de port: 389 (default)
refcnt: 2 status: Connected
last used: Thu May 22 15:30:05 2008

** ld 0x83b73b8 Outstanding Requests:
* msgid 3, origid 3, status InProgress
outstanding referrals 0, parent count 0
** ld 0x83b73b8 Response Queue:
Empty
ldap_chkResponseList ld 0x83b73b8 msgid 3 all 1
ldap_chkResponseList returns ld 0x83b73b8 NULL
ldap_int_select
read1msg: ld 0x83b73b8 msgid 3 all 1
read1msg: ld 0x83b73b8 msgid 3 message type modify
ldap_chase_referrals
read1msg: V2 referral chased, mark request completed, id = 3
new result: res_errno: 53, res_error: <0000001F: SvcErr: DSID-031A0FC0,
problem 5003 (WILL_NOT_PERFORM), data 0

, res_matched: <>


read1msg: ld 0x83b73b8 0 new referrals
read1msg: mark request completed, ld 0x83b73b8 msgid 3
request done: ld 0x83b73b8 msgid 3
res_errno: 53, res_error: <0000001F: SvcErr: DSID-031A0FC0, problem 5003
(WILL_NOT_PERFORM), data 0

, res_matched: <>


ldap_free_request (origid 3, msgid 3)
ldap_free_connection 0 1
ldap_free_connection: refcnt 1
ldap_parse_result
ldap_msgfree
ldap_err2string
PHP Warning: ldap_mod_replace(): Modify: Server is unwilling to perform in
/srv/www/htdocs/adLDAP2.1/commands/pc43/change.php on line 33
rueckkehrwerte fuer ldap_replace:
bool(false)
ldap_err2string
string(30) "Server is unwilling to perform"
int(53)
Verbindung schließen
ldap_free_connection 1 1
ldap_send_unbind
ldap_free_connection: actually freed
TLS trace: SSL3 alert write:warning:close notify
 

Lesen sie die antworten

#1 Florian Frommherz [MVP]
11/08/2008 - 18:53 | Warnen spam
Hallo Mario,

Mario wrote:
Sehr geehrte Frau Lenning!



Keine Ahnung, wie du hier gelandet bist. Wir sind nicht Frau Lenning,
wir sind öffentliche Microsoft-Newsgroups. Wenn du die Antwort hier
liest, kannst du vielleicht etwas damit anfangen:

Deine Fehlermeldung...

string(30) "Server is unwilling to perform"



ist relativ generisch. Versuch als erstes mal, aus allen "ldap://"
"LDAP://" zu machen. Der Provider muss groß geschrieben sein - das hat
schon so manchem geholfen.

Desweiteren würde ich eine andere Reihenfolge wàhlen: Benutzeraccount
anlegen, Attribute (ohne userAccountControl) setzen und Änderungen
übernehmen (Benutzer wird im AD erstellt). Danach Passwort und uAC
setzen und erneut speichern. Je nach Interface gibts Probleme, das
Passwort und die UAC eines Benutzers zu speichern, wenn dieser noch
nicht angelegt ist.

cheers,

Florian
Microsoft MVP - Group Policy
eMail: prename [at] frickelsoft [dot] net.
blog: http://www.frickelsoft.net/blog.
Maillist (german): http://frickelsoft.net/cms/index.ph...ilingliste

Ähnliche fragen