Autentifizierung per Script

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Autentifizierung per Script

Beitrag von sander2 »

Hallo!

Ich würde gerne ein privates phpBB Forum in unsere eigene Groupware einbinden. Die Benutzer sind also schon an der Groupware angemeldet. Jetzt würde ich es gerne so einrichten das Sie sich nicht nochmal extra fürs phpBB anmelden müssen (single-sign-on).

Ich habe eine Tabelle die mir die User-ID aus dem Groupware-Tool auf die User-IDs von phpBB mapt. Mit folgendem Script habe ich versucht einen phpBB Benutzer per Script einzuloggen:

Code: Alles auswählen


$phpbbid = getPHPBBID($_SESSION['user_id']);

// Do phpBB stuff
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$session_id = session_begin($phpbbid, $_SERVER['REMOTE_ADDR'], PAGE_INDEX, FALSE, 0, 0);

if( $session_id )
{	
	$url = "viewforum.php?f=10&style=2";	
	redirect(append_sid($url, true));
}
else
{
	message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
}

Der redirect wird ausgeführt, aber eingeloggt bin ich nicht.

Was mach ich falsch? Wie mach ichs richtig? ;-)

Achja, was vielleicht noch zu erwähnen ist, das Groupware-Tool läuft unter einen anderen Subdomain als die phpBB Installation, könnte das zu Problemen führen? Ich habe aber testweise auch schon versucht das Script direkt unter der phpBB Subdomain auszuführen.

Für eure Hilfe wäre ich sehr dankbar!
Viele Grüße,
Sander
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Wie sieht denn der redirect aus?
Hast du ne session id dran (sid=3434...)

Ich würd auf jeden fall mal versuchen den redirect nicht mit append_sid zu machen da die cookies nicht subdomainübergreifend sein könnten.

Code: Alles auswählen

$url = "viewforum.php?f=10&style=2&sid=" . $session_id['session_id'];   
redirect($url); 
olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Beitrag von sander2 »

ich habs jetzt mal ohne append_sid() probiert, die session id hängt am URL:

viewforum.php?f=10&style=2&sid=85b79b370536e6fee039a77cedb0553b

wenn ich das so aufrufe öffnet sich allerdings die login seite.

generell sollte mich die session_beginn(...) aber schon authetifizieren? oder muss ich noch irgendwas anderes tun?

irgendwelche tips wie ich rausfinden kann warum mein versuch scheitert?

danke!
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

sander2 hat geschrieben: irgendwelche tips wie ich rausfinden kann warum mein versuch scheitert?
Ja, schau mal in die datenbank ob die session korrekt angeleg wird.
- IP Richtig
- session_time aktuell

- user_id richtig
- session_logged_in 1

usw...

Gruß, Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Beitrag von sander2 »

ok, danke!

also die entsprechende zeile in der sessions tabelle sieht so aus:

session_id: 74ffeeca6bd548daab6d849956fb1684
session_user_id: -1
session_start: 1168624969
session_time: 1168624969
session_ip: 590d0ef8
session_page: 10
session_logged_in: 0
session_admin: 0

also eher schlecht..

ich übergebe der session_begin als userid die id aus der phpbb_users tabelle. (2). als ip übergebe ich $_SERVER['REMOTE_ADRESS'], warum steht da 590d0ef8?

für weitere tips wäre ich sehr dankbar!
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Beitrag von sander2 »

ich habe grade gesehen das ohne den redirect die session OK aussieht:

5ae1e6df3117648edfce8657335b071d 2 1168625484 1168625484 89.13.14 0 1 0

der redirect scheint eine neue session anzulegen.. die nicht autentifiziert ist..
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

session_user_id: -1 is ganz schlecht (gast)
session_logged_in: 0 auch...
Die ip wird über encode ip umgewandelt - das ist ok so...

Sicher das die so richtig ist?
$phpbbid = getPHPBBID($_SESSION['user_id']);

schon mal mit echo ausgegeben, bzw print_r($session_id) nach $session_id = session_begin(....?

Bis morgen, Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Beitrag von sander2 »

Olli Oberhausen hat geschrieben: Sicher das die so richtig ist?
ja. ich hab jetzt zum testen auch mal direkt die 2 übergeben. hilft nix. wie gesagt, wenn ich kein redirect mache und nur die session_id und session_logged_in ausgebe dann ist alles ok. sobald ich aber einen redirect mache (oder händisch eine seite des forums (im selben browser öffne) wird eine neue session angelegt... die frage ist nur warum? schonmal danke für deine hilfe, bis morgen! ;-)
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Habs glaube ich...

Übergib mal diese $user_ip an session_begin...

Code: Alles auswählen

$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );

$user_ip = encode_ip($client_ip);
89.13.14 hat in der session table nämlich nix zu suchen.

Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
sander2
Mitglied
Beiträge: 6
Registriert: 12.01.2007 02:09

Beitrag von sander2 »

:grin: das wars! du bist für mich der held des tages! ;-)

was noch nicht funktioniert ist wenn ich das script von der anderen subdomain aufrufe. liegt bestimmt daran das die session nicht domainübergreifend gelten. kann man das irgendwo ändern? falls nicht würde ich erstmal eine "dreckige" lösung wählen (das auth script einfach auf die phpbb subdomain legen).

D A N K E !
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“