Session tussen 2 domeinen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ad Vertentie

Ad Vertentie

15/11/2014 02:30:31
Quote Anchor link
Ik wil een oplossing bouwen waarbij het mogelijk is om op domein A in te loggen, en deze inloggegevens middels sessions te kunnen gebruiken op domein B.
Heeft iemand hier ervaring mee, en hoe kan ik dit het beste bouwen?
 
PHP hulp

PHP hulp

22/12/2024 19:42:27
 
- Ariën  -
Beheerder

- Ariën -

15/11/2014 11:27:22
Quote Anchor link
Tussen subdomeinen is het het nog wel te doen. Maar twee losse domeinen domeinA.nl en domeinB.nl is echt een stuk lastiger, omdat browsers het niet toestaan dat cookies op meerdere domeinen kunnen worden uitgelezen.

De enige oplossing die ik ken is een eigen Sessionhandler te schrijven, en de data daarvan te delen in de database.
http://php.net/manual/en/class.sessionhandler.php
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/11/2014 11:27:26
Quote Anchor link
Tussen verschillende subdomeinen kun je zeker met dezelfde sessie werken. Tussen verschillende domeinen op dezelfde server misschien, weet ik niet zeker. Vertel eens of de domeinen op een eigen server staan?

Toevoeging op 15/11/2014 11:28:39:

Tussen verschillende subdomeinen kun je zeker met dezelfde sessie werken. Tussen verschillende domeinen op dezelfde server misschien, weet ik niet zeker. Vertel eens of de domeinen op een eigen server staan?
 
Ward van der Put
Moderator

Ward van der Put

15/11/2014 12:43:05
Quote Anchor link
Het kan "op de oude manier" door een sessie-ID mee te geven in een URL, dus met links in de stijl: index.php?sid=... Daarbij deel je de sessiedata achter de schermen inderdaad via bijvoorbeeld een gemeenschappelijke database, zoals Aar uitlegt.

Niet echt veilig, daarom doen we het liever niet meer, maar voor alledaagse toepassingen wel voldoende veilig te maken, bijvoorbeeld door met extreem sterke sleutels te werken die hooguit enkele seconden mogen worden gebruikt en die alleen via SSL te transporteren.
 
Ozzie PHP

Ozzie PHP

15/11/2014 17:18:12
Quote Anchor link
Bij dit soort vragen is allereerst belangrijk WAAROM?

Websites zijn op zichzelf staande eilandjes die niks met elkaar te maken hebben. Het is dan ook niet logisch dat ze sessie-bestanden met elkaar delen. Zelfs al zijn de (eigenaars van de) websites "vriendjes" met elkaar.

Websites zijn losse dingen, allemaal met hun eigen leden. Als je gebruik wilt maken van website A zul je je eerst moeten aanmelden "ding dong, daar ben ik... mag ik naar binnen?". Als je vervolgens wordt toegelaten tot website A, wil dat niet zeggen dat je ook automatisch wordt toegelaten tot website B. Het zijn eilandjes, weet je nog? Ook hier zul je je dus weer even moeten aanmelden.

Mijn advies: laat het idee van het onderling delen van sessies compleet varen, want je haalt je een hoop ellende op de hals.
 
Ad Vertentie

Ad Vertentie

16/11/2014 04:40:41
Quote Anchor link
Ik denk dat ik al een oplossing heb.
Slechts 1 MySQL database gebruiken voor 2 domeinen.
Het betreft een VPS, en beiden domeinnamen draaien op dezelfde VPS.
 
Simo Mr

Simo Mr

16/11/2014 08:59:54
Quote Anchor link
Hey,

Als je in twee domeinen wilt inloggen met sessions, dan heb jij twee oplossingen.
- ajax calls
- redricts

- met ajax kan je een http request gebruiken voor elke domein.

Met redrict kan je die stappen gebruiken.



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
In domein1.com:
$login = checklogin();
if($login == 'success') {
createSession();
  redrict('http://domein2.com/redrictlogin.php?user='.usernaam.'&pass='.password);
  die();
}

In domein2.com/redrictlogin.php pagina


$login = checklogin();
if($login == 'success') {
createSession();
// redrict back terug naar domein1;
redrict('http://domein1.com/');
die();
}




Belangrijk:
zij moeten allebei redrictlogin.php pagina hebben
Gewijzigd op 16/11/2014 09:01:12 door Simo Mr
 
John D

John D

16/11/2014 12:19:15
Quote Anchor link
Ozzie PHP op 15/11/2014 17:18:12:
Bij dit soort vragen is allereerst belangrijk WAAROM?

Websites zijn op zichzelf staande eilandjes die niks met elkaar te maken hebben. Het is dan ook niet logisch dat ze sessie-bestanden met elkaar delen. Zelfs al zijn de (eigenaars van de) websites "vriendjes" met elkaar.

Websites zijn losse dingen, allemaal met hun eigen leden. Als je gebruik wilt maken van website A zul je je eerst moeten aanmelden "ding dong, daar ben ik... mag ik naar binnen?". Als je vervolgens wordt toegelaten tot website A, wil dat niet zeggen dat je ook automatisch wordt toegelaten tot website B. Het zijn eilandjes, weet je nog? Ook hier zul je je dus weer even moeten aanmelden.

Mijn advies: laat het idee van het onderling delen van sessies compleet varen, want je haalt je een hoop ellende op de hals.
Dit is wel een beetje flauwekul hoor en enigszins schoolmeesterachtig. Een goed voorbeeld is Coolblue met zijn tientallen websites(domeinen) die absoluut geen eilandjes zijn. En waarom een hoop ellende, TS zegt dat de websites op 1 vps draaien en kennelijk zijn ze aan elkaar gerelateerd. Mijn voorbeeld van Coolblue slaat ook echt niet 10x mijn NAW op. TS heeft wellicht iets vergelijkbaars.
Gewijzigd op 16/11/2014 12:35:21 door John D
 
Ozzie PHP

Ozzie PHP

16/11/2014 14:44:07
Quote Anchor link
@John D

Als je bij Coolblue inlogt in shop A en je gaat vervolgens naar shop B, ben je dan automatisch in shop B ingelogd? Of gebruik je de gegevens van shop A om in te loggen bij shop B?

Maar goed, ieder moet voor zich weten wat ie doet natuurlijk. Als het websites zijn die een keten vormen valt er wellicht iets voor te zeggen, maar dan nog moet je goed nadenken WAAROM je sessies wilt delen. Websites zijn op zichzelf staande dingen. Je maakt VERSCHILLENDE websites, omdat ze blijkbaar... verschillend zijn! Anders was het wel 1 website geweest nietwaar. Daarom geef ik alleen aan dat je over dit soort dingen heel goed moet nadenken, ook vanuit het oogpunt van usability. Persoonlijk zou ik het zelfs raar en onwenselijk vinden als ik bij shop A een laptop koop en mijn contactgegevens invul, en als ik dan vervolgens naar website B (een shop met dameskleding) surf, dat daar ineens mijn gegevens ook al bekend zijn, terwijl ik me daar nooit heb aangemeld.
 
Aad B

Aad B

16/11/2014 20:58:00
Quote Anchor link
"Anders was het wel 1 website geweest nietwaar". Ozzie, neen, je houdt te krampachtig vast aan je idee. Coolblue heeft er kennelijk voor gekozen om uit reclame, commercieel oogpunt en herkenbaarheid te werken met: laptopshop.nl, tabletcenter.nl, computerstore.nl, videokaartshop.nl, ereaderstore.nl, memoryshop.nl etc. DAAROM verschillende websites (en domeinen) en met name vanwege eenduidig ontwerp, inrichting en herkenbaarheid is het niet raar en onwenselijk dat je contactgegevens op elk van deze "websites" bekend zijn. Het blijft immers de herkenbaarheid van Coolblue. Je koopt duidelijk herkenbaar bij Coolblue. Wellicht heeft TS een dergelijk idee of ontwerp en is je uitgebreide reactie niet op zijn plaats.
Gewijzigd op 16/11/2014 21:10:55 door Aad B
 
Ozzie PHP

Ozzie PHP

17/11/2014 00:26:49
Quote Anchor link
Uiteraard mag je dat vinden, dat is je goed recht. Daarentegen heb ik gelukkig ook recht op mijn mening.

Het is niet erg om je als keten te profileren. Ik zeg alleen dat ik het raar vind als ik inlog op website A mijn gegevens ineens bekend zijn bij website B. Als ik in een winkel mijn gegevens achterlaat, dan verwacht ik niet dat als ik een winkel verder loop dat daar ineens ook mijn gegevens bekend zijn zodra ik kom binnenwandelen. Dat Coolblue zich als keten profileert is prima. Het is prima als ik me bij Coolblue shop A inschrijf en dat ik herkend wordt bij Coolblue shop B op het moment dat ik me daar bewust aanmeld (door in te loggen). Het wordt echter vreemd als ik zomaar uit het niets bij shop B wordt herkend zonder dat ik me daar heb aangemeld.

Maar goed, dit gezegd hebbende... sessie cookies zijn zover ik weet niet uitwisselbaar tussen verschillende domeinen, dus dan zou je sessies moeten gaan overdragen via GET of POST data zoals Ward hierboven al even aanhaalde. Lijkt me niet heel veilig.
 
Ward van der Put
Moderator

Ward van der Put

17/11/2014 08:33:58
Quote Anchor link
Misschien kan Etienne zelf uitleggen wat hij precies wil bereiken?

Pas dan weten we of hij voor dit probleem nu een schroevendraaier of een hamer nodig heeft.

Technisch kun je er meerdere kanten mee op. Je kunt je eigen gecentraliseerde public key infrastructure (PKI) of gedecentraliseerd web of trust (WOT) opzetten als een klein netwerk van webservers dat elkaar (deels) vertrouwt. Zolang het geheel op één server draait -- én dat ook te verifiëren is!! -- is het niet heel moeilijk.
 
Eddy E

Eddy E

17/11/2014 09:50:43
Quote Anchor link
Als het op 1 server draait, kan je toch gewoon 'continue' de cookies van de ene website naar de andere website kopieren?
Dus bij A zijn er servercookies, die kopieer je gewoon naar B.

Wordt pas leuk als iemand uitlogt: dan ben je nog op B ingelogd en die kopieert het terug naar A...
 
Ward van der Put
Moderator

Ward van der Put

17/11/2014 10:03:49
Quote Anchor link
Dan wissel je niet continue cookies uit, maar slechts een sleutel bij overschakelen van A naar B of terug van B naar A. De data zelf sla je afgeschermd op in de gedeelde database; de sleutel geeft er toegang toe.

Daarom is dit systeem ook niet ongevaarlijk: de sleutel kan in verkeerde handen vallen. Daarom zou ik bewezen technieken voor het uitwisselen van die sleutel gebruiken die dicht aanliggen tegen PKI of WOT.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.