Jednotné přihlášení – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jednotné přihlášení – PHP – Fórum – Programujte.comJednotné přihlášení – PHP – Fórum – Programujte.com

 

Marty_SVK0
Návštěvník
27. 6. 2010   #1
-
0
-

Dobrý den,
chtěl bych se zeptat, jaké jsou možnosti pro vytvoření jednotného přihlašování na různé domény. Mám totiž v plánu udělat pár webu a do budoucna by bylo určitě vhodné jednotné přihlašování. Věděl by mi po případě někdo doporučit potřebnou literaturu, pokud je k tomu potřeba něco speciálního.

Děkuji

Nahlásit jako SPAM
IP: 91.127.228.–
Zabav sa na : http://www.1000her.eu
Bryant
~ Moderátor
0
Stálý člen
28. 6. 2010   #2
-
0
-

No de o to jestli máš na mysli různé weby na subdoménách, nebo na vlastních doménách 2.řádu.
Na subdoménách máš víc možností, sessions a cookies.
Při té druhé možnosti už to bude horší, možná by to šlo nějak pomocí cookies, ale nenapadá mě jak, snad ti pomůže někdo víc zaběhnutý. Zkus ale kontaktovat svůj hosting, snad by ti tam mohli pomoct. ;)

Nahlásit jako SPAM
IP: 94.138.99.–
„Bez činu zůstává i nejkrásnější myšlenka bezcennou.“
— Móhandás Karamčand Gándhí
z_moravec
~ Redaktor
+3
Posthunter
28. 6. 2010   #3
-
0
-

Mezí doménama ti cookies nepomůžou. Nejjednodušší řešení je asi využít nějakou externí autorizační službu, např. openId. Pokud ti to z nějakého důvodu nevyhovuje, tak se to dá udělat podobným způsobem. Budeš mít jeden autorizační server, který bude vyřizovat všechny požadavky. To je samozřejmě poněkud náročnější na prostředky.

Pak existují další možnosti, ale ty mají hodně nevýhod, např. zrcadlení databáze s autorizačními daty.

Nahlásit jako SPAM
IP: 147.251.29.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
Marty_SVK0
Návštěvník
28. 6. 2010   #4
-
0
-

Ale problém bude asi i v tom, že chci, aby byl člověk stále přihlášen a tímto způsobem by se musel na každé doméně zase přihlašovat, nebo se mýlím?

Nahlásit jako SPAM
IP: 78.98.89.–
Zabav sa na : http://www.1000her.eu
zdenda
~ Anonymní uživatel
257 příspěvků
28. 6. 2010   #5
-
0
-

Já to vezmu ze široka, včetně evidentních věcí.

Takže, základ je stejný, jako u jediné domény.
Klient se při prvotním přihlášení musí nějak prokázat - typicky jménem a heslem.
Potom stačí klienta identifikovat, jako přihlášeného - typicky pomocí Cookie vygenerované po přihlášení.

V případě více domén musí alespoň jedna umožňovat prvotní přihlášení, to není problém.
A všechny ostatní musí být schopny přihlášeného uživatele identifikovat.
To také není problém, pokud všechny domény mají přístup k identifikátoru.
Což ovšem nemají, protože prohlížeče normálně neumožňují pristupovat k Cookies jiných domén.
Vyčlenímě tedy jednu doménu [master], která bude spravovat Cookies a na požádání je bude poskytovat ostatním.
Požadavky budou probíhat pomocí přesměrování prohlížeče (který tak odešle i Cookies cílové domény) na master, který požadavek zpracuje a vrátí řízení a případná data zpět tazateli.

Následující kód je jen nástřel a rozhodně není bez úprav vhodný ke konečnému použití. Možná ani nefunguje.

master.tld/sso.php:

$action = $_GET['action']; 

$return = $_GET['return'];
$sessid = $_GET['sessid'];
if ($action == 'setid') setcookie('sessid', $sessid);
else if ($action == 'getid') $sessid = isset($_COOKIES['sessid']) ? $_COOKIES['sessid'] : 'null';
if ($return) header("Location: $return?sessid=$sessid");


domena.tld/login.php:
$master = 'http://master.tld/sso.php';

$myself = 'http://domena.tld/login.php'
$sessid = $_GET['sessid'];
$cookie = $_COOKIES['sessid'];
if ($loginform) { // prihlasovaci formular. poslat id na master.
if (auth($user, $pass)) {
$sessid = generate_sid();
header("Location: $master?action=setid&sessid=$sessid&return=$myself");
exit;
}
} else if ($sessid) { // odpoved od mastera. prevzit do vlastnich cookies.
if (authsid($sessid)) {
setcookie('sessid', $sessid);
$loggedin = true;
}
} else if ($cookie) { // vlastni cookie
if (authsid($cookie))
$loggedin = true;
} else { // vyzadat id od mastera
header("Location: $master?action=getid&return=$myself");
exit;
}

Nahlásit jako SPAM
IP: 213.211.51.–
zdenda
~ Anonymní uživatel
257 příspěvků
28. 6. 2010   #6
-
0
-

Asi bylo lepší použít už nějakou existující prověřenou implementaci, než vlastní řešení. A osobně si nejsem jist, jestli je vhodné to vůbec dělat, pokud ty domény nebudou nějak úzce spjaté.

Nahlásit jako SPAM
IP: 213.211.51.–
zdenda
~ Anonymní uživatel
257 příspěvků
28. 6. 2010   #7
-
0
-

A říká se tomu SSO - Single Sign-On, abys vědel, co googlit :)

Nahlásit jako SPAM
IP: 213.211.51.–
Marty_SVK0
Návštěvník
3. 7. 2010   #8
-
0
-

Domény budou propojeny, ať už odkazy nebo funkčně. I pro uživatele je pohodlnější jednou se přihlásit a mít přístup k více doménám. Zároveň nebude zbytečně mnoho dat v databázi, protože každému stačí jeden účet. Narazil jsem i na pěkný tutoriál (http://www.jasny.net/articles/simple-single-sign-on-for-php/), bohužel mi stále vypisuje tuto chybu:

Fatal error: Uncaught exception ‘Exception’ with message ‘SSO failure: The server responded with a 406 status1: “Not attached”.’ in /var/www/SSO/broker/sso.php:162 Stack trace: #0 /var/www/SSO/broker/index.php(5): SingleSignOn_Broker->getInfo() #1 {main} thrown in /var/www/SSO/broker/sso.php on line 162

Něco mu musí vadit v nastavení serveru, protože jsem to ještě vyzkoušel na freehostingu endora.cz a tam to v pohodě šlapalo. Pokud by mi někdo věděl poradit, budu mu vděčný. Má verze : php 5.2.6 (LINUX)

Nahlásit jako SPAM
IP: 78.98.37.–
Zabav sa na : http://www.1000her.eu
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Přihlášení — založil Zelenáč

Přihlášení — založil petr143

Prihlaseni — založil Misiak

Přihlášení uživatele — založil quest

Přihlášení session — založil Zuben

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý