Problemi con PHP e ldaps

di il
12 risposte

Problemi con PHP e ldaps

Devo effettuare un autenticazione su un server remoto Windows IIS mediante protocollo ldaps da macchina windows 10 su cui girano dei servizi web e php.
Ho scritto lo script e l' errore che ottengo è:

Notice: Use of undefined constant LDAP_OPT_X_TLS_CACERTDIR - assumed 'LDAP_OPT_X_TLS_CACERTDIR' in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 11

Warning: ldap_set_option() expects parameter 2 to be integer, string given in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 11

Notice: Use of undefined constant LDAP_OPT_X_TLS_CACERTFILE - assumed 'LDAP_OPT_X_TLS_CACERTFILE' in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 12

Warning: ldap_set_option() expects parameter 2 to be integer, string given in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 12

Warning: ldap_connect(): Could not create session handle: Bad parameter to an ldap routine in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 15

Warning: ldap_start_tls() expects parameter 1 to be resource, boolean given in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 17

Warning: ldap_start_tls(): Unable to start TLS: Can't contact LDAP server in C:\Apache24\htdocs\prenotazione_autobus\test_LDAP-Partenza-5.php on line 26

Il mio codice è:
<?php

ldap_set_option(null, LDAP_OPT_X_TLS_CACERTDIR, '../Path/');
ldap_set_option(null, LDAP_OPT_X_TLS_CACERTFILE, '../Path/nome_certificcato.pem');

// either
$ldap = ldap_connect('ldaps://server:636');

ldap_start_tls($ldap);
$ldap="ldaps://server:636";
$usr="user";
$pwd="password";

$ds=ldap_connect($ldap);
$ldapbind=false;
if(ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
if(ldap_set_option($ds, LDAP_OPT_REFERRALS, 0))
if(ldap_start_tls($ds))
$ldapbind = @ldap_bind($ds, $usr, $pwd);
ldap_close($ds);
if(!$ldapbind)
echo "ERROR";
else
echo "OK";
?>

12 Risposte

  • Re: Problemi con PHP e ldaps

    This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x. ldap_set_option

    LDAP_OPT_X_TLS_CACERTFILE o LDAP_OPT_X_TLS_CACERTDIR Almeno php 7.1 (Attualmente ti dice che non esiste questa costante, il che significa inferiore a php 7.1)
  • Re: Problemi con PHP e ldaps

    Ciao e benvenuto/a nel forum!

    La porta 636 è per il servizio ldaps crittografato.
    La porta 389 è per il servizio ldap non crittografato.

    Sei sicuro che sia ldaps?

    Ora è tardi... Comunque domani cerco di guidarti su come fare 1 autenticazione ldap e di recuperare le varie proprietà dell'utente. Tutto con una classe...

    Ovviamente ho la classe che mi sono fatto da solo funzionante.

    Però così è troppo semplice, devi capire come funziona, in modo tale che se devi apportare modifiche o altro puoi farlo da solo.

    Il codice scrivilo tra i tag CODE che è più leggibile.
    Così scritto ci si capisce poco e sinceramente nemmeno ho letto cosa hai scritto... Perché non mi va di impazzire.

    Ciao notte...
  • Re: Problemi con PHP e ldaps

    Si la porta è 636 è ldaps su server windows da macchina windows
  • Re: Problemi con PHP e ldaps

    Hormus ha scritto:


    This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x. ldap_set_option

    LDAP_OPT_X_TLS_CACERTFILE o LDAP_OPT_X_TLS_CACERTDIR Almeno php 7.1 (Attualmente ti dice che non esiste questa costante, il che significa inferiore a php 7.1)
    Io uso PHP 7.1.3 indi credo che il problema non dovrebbe essere questo.
  • Re: Problemi con PHP e ldaps

    cali ha scritto:


    Ciao e benvenuto/a nel forum!

    La porta 636 è per il servizio ldaps crittografato.
    La porta 389 è per il servizio ldap non crittografato.

    Sei sicuro che sia ldaps?

    Ora è tardi... Comunque domani cerco di guidarti su come fare 1 autenticazione ldap e di recuperare le varie proprietà dell'utente. Tutto con una classe...

    Ovviamente ho la classe che mi sono fatto da solo funzionante.

    Però così è troppo semplice, devi capire come funziona, in modo tale che se devi apportare modifiche o altro puoi farlo da solo.

    Il codice scrivilo tra i tag CODE che è più leggibile.
    Così scritto ci si capisce poco e sinceramente nemmeno ho letto cosa hai scritto... Perché non mi va di impazzire.

    Ciao notte...


    Allora si certo la macchina da raggiungere è raggiungibile solo attraverso ldaps; ho scaricato da essa a mezzo broswer anche il certificato catena .pem.
    Indi la porta giusta è la 636 la 389 non è operativa.
  • Re: Problemi con PHP e ldaps

    Tramite phinfo() puoi controllare quale LDAP_API_VERSION stai utilizzando? https://bugs.php.net/bug.php?id=7355 (maggiore 2000 che significa php 7.1 o superiore).
  • Re: Problemi con PHP e ldaps

    Hormus ha scritto:


    Tramite phinfo() puoi controllare quale LDAP_API_VERSION stai utilizzando? https://bugs.php.net/bug.php?id=7355 (maggiore 2000 che significa php 7.1 o superiore).
    Verifica fatta.

    Ecco il risultato:

    API Version 3001
  • Re: Problemi con PHP e ldaps

    galactic ha scritto:


    cali ha scritto:


    Ciao e benvenuto/a nel forum!

    La porta 636 è per il servizio ldaps crittografato.
    La porta 389 è per il servizio ldap non crittografato.

    Sei sicuro che sia ldaps?

    Ora è tardi... Comunque domani cerco di guidarti su come fare 1 autenticazione ldap e di recuperare le varie proprietà dell'utente. Tutto con una classe...

    Ovviamente ho la classe che mi sono fatto da solo funzionante.

    Però così è troppo semplice, devi capire come funziona, in modo tale che se devi apportare modifiche o altro puoi farlo da solo.

    Il codice scrivilo tra i tag CODE che è più leggibile.
    Così scritto ci si capisce poco e sinceramente nemmeno ho letto cosa hai scritto... Perché non mi va di impazzire.

    Ciao notte...


    Allora si certo la macchina da raggiungere è raggiungibile solo attraverso ldaps; ho scaricato da essa a mezzo broswer anche il certificato catena .pem.
    Indi la porta giusta è la 636 la 389 non è operativa.
    A proposito scusami non avevo visto il tuo messaggio di benvenuto. Ti ringrazio sei stato molto gentile. A tal proposito in relazione ad una tua osservazione non conoscendo ancora bene il funzionamento del forum in futuro quando vorrò postare del codice nel messaggio basta che lo racchiuda tra i tag <code> codice </code>? Non so se è lecito che lo chieda qui ma non ho avuto ancora modo di leggere FAQ etc presto dall'impellenza di questo problema. Grazie ancora,.
  • Re: Problemi con PHP e ldaps

    Di nulla...
    Posso capire la foga....

    Esatto I tag CODE...

    Cioa e buona domenica
  • Re: Problemi con PHP e ldaps

    Ciao scusa, non riesco a comprendere poiché il codice C crea le costanti, puoi verificare https://github.com/php/php-src/blob/php-7.1.0RC6/ext/ldap/ldap.c#L2238-L2245 anche tu trovi tale scritta?
  • Re: Problemi con PHP e ldaps

    Hormus ha scritto:


    This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x. ldap_set_option

    LDAP_OPT_X_TLS_CACERTFILE o LDAP_OPT_X_TLS_CACERTDIR Almeno php 7.1 (Attualmente ti dice che non esiste questa costante, il che significa inferiore a php 7.1)
    Può essere che tu abbia ragione; in effetti ho verificato e risulta:
    Core
    PHP Version 7.0.11

    e ovviamente

    HTTP Response Headers
    X-Powered-By PHP/7.0.11

    Ora dovrò aggiornare il PHP ma ci metterò tempo perchè questa è una macchina di produzione indi dovrò clonarla.
    Tu cosa mi consigli di usare il PHP 7.2, 7.3, 7.4 o direttamente 8?

    Detto questo la domanda a questo punto mi viene spontanea ma se non posso usare queste costanti su php 7.0.11 come faccio a collegarmi in ldaps? un metodo vi deve essere credo.
  • Re: Problemi con PHP e ldaps

    Sicuramente c'è il metodo (codice) meno sicuro da usare, io sono ignaro di ciò.
    Però puoi affidarti a framework o il tuo motore di ricerca prior php 7.1 LDAP_OPT_X_TLS_CACERTFILE.
    In linea teorica dovrai lavorare solo con versioni supportate https://www.php.net/supported-versions.ph (che può comprendere miglioramenti di bug, nonché anche questioni di sicurezza).
    Tra risultati pertinenti http://www.phpldaptools.com/cookbook/Getting-Your-LDAP-SSL-Certificate/#2-using-a-ldap-server-get-the-ssl-certificates che indica anche la modifica manuale al file ldap.conf
Devi accedere o registrarti per scrivere nel forum
12 risposte