Anzeige:
Ergebnis 1 bis 13 von 13

Thema: Benutzerauthentifizierung

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100

    Benutzerauthentifizierung

    Servus!

    Kann ich in php Benutzer (z.B. mittels PAM) authentifizieren? Ich würde das nur sehr ungerne mit mod_auth_pam von Apache machen lassen, sondern lieber auf meiner Website user/password in einem Formular abfragen. Es muss auch nicht unbedingt PAM sein, ich muss nur irgendwie das Eingegebene über die /etc/passwd und shadow überprüfen. Da dies aber sowieso irgendwann auf ldap umgestellt wird, wollte ich beides abdecken...und das ist mit PAM ja wohl möglich, oder?

    Gruß
    Thorsten

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Hi,

    schau mal hier: http://www.math.ohio-state.edu/~ccunning/pam_auth/

    laut Doku soll eine Authentifizierung dann ziemlich easy sein:


    PHP-Code:
    <?
    if (pam_auth($username, $password, &$error)) {
        echo "Yeah baby, we're authenticated!";
    } else {
        echo $error;
    }
    ?>

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Das ist ja einfach.

    Danke, Michael, werd' ich gleich morgen probieren.

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Schade, klappt leider nicht. Ich bekomm' diesen Fehler im Apache-errorlog:
    PHP Warning: Unknown(): pam_auth: Unable to initialize module\nModule compiled with module API=20020429, debug=0, thread-safety=0\nPHP compiled with module API=20020429, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
    Hab's mit Installationsmethode 2 (mit phpize) versucht.
    Naja, vielleicht ist's nicht mit PHP4.4 kompatibel? Die neueste Version heißt ja leider "pam_auth 0.4 for php 4.3".

  5. #5
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    pam_auth Ist ein Apache Modul
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  6. #6
    Registrierter Benutzer Avatar von ClausVB
    Registriert seit
    05.08.2005
    Ort
    NRW - Deutschland
    Beiträge
    106
    Ich benutze immer die mod_auth (ohne PAM) und kann nichts Nachteiliges sagen.

    Gruß
    Claus

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    @undefined: Ja, auch, aber dieses pam_auth ist ein PHP-Modul. Bin mir ziemlich sicher, dass ich mich da nicht vertan hab', aber ich werd's nochmal prüfen...nach Weihnachten.

    @ClausVB: Danke, das werde ich mir mal als Alternative anschauen.

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    PHP ist eine Client Anwendung von Apache wenn es als Modules Kompiliert wurde, wenn dir also Apache dies nicht zu Verfügung stellt kann dies auch nicht gehen. Das gleiche gilt für mod_auth was wiederum vom Diretcory Flag abhängt.
    Code:
    <Directory "/srv/www/htdocs/mein/Pfad">
     Options All
     AllowOverride Indexes FileInfo Authconfig
     Order allow,deny Allow from all
    </Directory>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Okay, also ich habe jetzt auch das AUTH_PAM-Modul vom Apache installiert und "-D AUTH_PAM" zu den APACHE2_OPTS hinzugefügt um es zu aktivieren. Es funktioniert aber trotzdem nicht, ich bekomme noch den gleichen Fehler.

  10. #10
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Also eigentlich ist die Fehlermeldung ja ziemlich eindeutig: PHP wurde mit thread-safety=1 kompiliert, das Modul hingegen mit thread-safety=0. Da dies nicht übereinstimmt, kann das Modul nicht initialisiert werden.

    Jetzt hab' ich aber ein Problem damit, das Modul so zu kompilieren, dass thread-safety=1 ist. Es gibt in der configure kein Parameter für so etwas, auch nicht -pthreads oder irgendwas mit ZTS. Wie ich auf ZTS komme? Nun, ich glaube, dass diese Stelle in der php_pam_auth.h dafür verantwortlich ist:
    Code:
    #ifdef __ZTS
    #include "TSRM.h"
    #endif
    
    PHP_MINIT_FUNCTION(pam_auth);
    PHP_MSHUTDOWN_FUNCTION(pam_auth);
    PHP_MINFO_FUNCTION(pam_auth);
    
    PHP_FUNCTION(pam_auth);
    
    ZEND_BEGIN_MODULE_GLOBALS(pam_auth)
                    char *servicename;
    ZEND_END_MODULE_GLOBALS(pam_auth)
    
    #ifdef ZTS
    #define PA_G(v) (pam_auth_globals->v)
    #define PA_LS_FETCH() zend_pam_auth_globals *pam_auth_globals = ts_resource(pam_auth_globals_id)
    #else
    #define PA_G(v) (pam_auth_globals.v)
    #define PA_LS_FETCH()
    #endif
    Also hab' ich einfach mal folgendes über diesem Code eingefügt:
    Code:
    #define ZTS
    #define __ZTS
    mit folgendem Ergebnis bei "make":
    $ make
    /bin/sh /home/xn09789/tmp/pam_auth/libtool --mode=compile gcc -I. -I/home/xn09789/tmp/pam_auth -DPHP_ATOM_INC -I/home/xn09789/tmp/pam_auth/include -I/home/xn09789/tmp/pam_auth/main -I/home/xn09789/tmp/pam_auth -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -DHAVE_CONFIG_H -g -O2 -c /home/xn09789/tmp/pam_auth/pam_auth.c -o pam_auth.lo
    gcc -I. -I/home/xn09789/tmp/pam_auth -DPHP_ATOM_INC -I/home/xn09789/tmp/pam_auth/include -I/home/xn09789/tmp/pam_auth/main -I/home/xn09789/tmp/pam_auth -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -DHAVE_CONFIG_H -g -O2 -c /home/xn09789/tmp/pam_auth/pam_auth.c -fPIC -DPIC -o pam_auth.lo
    /home/xn09789/tmp/pam_auth/pam_auth.c: In function `zif_pam_auth':
    /home/xn09789/tmp/pam_auth/pam_auth.c:188: error: `pam_auth_globals_id' undeclared (first use in this function)
    /home/xn09789/tmp/pam_auth/pam_auth.c:188: error: (Each undeclared identifier is reported only once
    /home/xn09789/tmp/pam_auth/pam_auth.c:188: error: for each function it appears in.)
    /home/xn09789/tmp/pam_auth/pam_auth.c:188: warning: initialization makes pointer from integer without a cast
    make: *** [pam_auth.lo] Error 1
    Ich hab's auch schon damit versucht, nur __ZTS zu definieren - da kommte beim Laden des Moduls der gleiche Fehler - und auch mal nur ZTS zu definieren - da kommt schon der eben aufgeführte Fehler bei make. Es scheint also, dass nur ZTS dafür verantwortlich ist, ob make einen Fehler bringt oder nicht.

    Naja, jedenfalls weiß ich jetzt nicht mehr weiter.

  11. #11
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Du hast ein Linker Problem, sind alle openssl und pam Pakete Installiert ?
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  12. #12
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Nun ja, ich denke, die benötigten Pakete sind installiert:

    - openssl 0.97i
    - pam 0.78
    - pam-login (nötig? ist jedenfalls auch da)

    Wenn was fehlt, hätte dann nicht ein "file not found" beim include kommen müssen?
    Hmm....vielleicht ist meine openssl-Version ja zu neu, also das pam_auth.c im thread-safe-Modus nicht mehr kompatibel damit.

  13. #13
    Registrierter Benutzer
    Registriert seit
    11.09.2003
    Beiträge
    100
    Also ich hab' nix mit "pam_auth_globals_id" finden können - ich glaube einfach, dass der Autor das nie mit aktiviertem thread-safety getestet hat, bzw. auch gar nicht vorgesehen hat. Nun ja, muss ich mich wohl selbst mal darum kümmern, ich schau' mal wie das bei anderen Modulen gelöst ist und wann php überhaupt meint, dass ein Modul mit thread-safety kompiliert wurde und wann nicht...

    [...1 Stunde später...]

    Oh Mann, ich hab' gerade mal nachgeschaut ob thread-safety überhaupt bei dem PHP-Paket aktiviert ist, das ich auf den Maschinen installiert habe, auf denen pam_auth später zum Einsatz kommen soll: ist es nicht. Arrrrrgh, und ich stocher' schon ne Stunde im Quellcode von php und pam_auth rum um das mit aktiviertem thread-safety zum laufen zu bringen, alles für die Katz'!

    ...naja, schöner wär's natürlich trotzdem, wenn es sowohl mit als auch ohne zu kompilieren ginge. Da hab' ich zumindest jetzt mal ein Ziel, um ein bisschen gescheiter in die C-Programmierung einzusteigen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •