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
Fórum › PHP
Jednotné přihlášení
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. ;)
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.
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;
}
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)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
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
Moderátoři diskuze