Jump to content
php.lv forumi

Viena autentifikācija uz daudziem domeiniem.


codez

Recommended Posts

Varbūt kādam ir ideja, kā šo viselegantāk realizēt:

 

Ir galvenais domeins - galvenais.com, kurā lietotājs reģistrējas un pamatā lieto, taču sistēmā ir vēl simtiem citi domeini (cits1.com - cits100.com), kuros vajag nodrošināt to, ka lietotājs ir ielogojies un var veikt dažas darbībās, tāpat to saturā saņem daļu sava profila informācijas.

Visu domeinu saturs tiek ģenerēts no viena servera.

 

Galvenie apsvērumi:

- lietotājs ielogojoties galvenais.com, saņem savu sesijas cookie-ju tikai uz šo domēnu.

- cits1.com domeinam nav obligāti uzreiz atgriežot saturu jāidentificē lietotājs, to var izdarīt ar js faila pieprasījumu uz galvenais.com lapu pēc cits1.com lapas ielādes.

- cits1.com var saturēt lietotāju ievietotu javascriptu, tāpēc lietotāja identifikācijas sistēmai jābūt tādai, lai to nevar pārķert šis uz cits1.com ievietotais lietotāju javascript.

- no cits1.com lapas ir vajadzīgs veikt dažas darbības, kuras jāveic kā galvenais.com ielogotam lietotājam, bet šīs darbības nedrīkst simulēt uz cits1.com esošais lietotāja lavascript.

Link to comment
Share on other sites

Blitz, tavs dotais variants būtībā strādā, lai sesiju varētu izmantot vairākos domeinos, bet tam ir trūkumi:

1) es varu nosūtīt saiti uz tavu galveno domeinu ar paramtru request_session_id un request_from kādu savu domeinu un viņš mani redirektē tā, ka saitē ir iekļauts sesijas id, tādā veidā varu nozagt sesijas id.

2) katram citam domeinam tiek glabāts cookiju komplekts, kas ļauj lietotājam, kurš ielicis js uz cits1.com domeina, nozagt sesijas cookijus.

Link to comment
Share on other sites

Blitz gadījumā varētu vienkārši redirektot sesijas id tikai uz domeiniem, kuri ir atļauti sarakstā, bet manā gadījumā šis variants pat īsti neder, jo gribētos, lai sesijas identifikācijas cookiji glabātos tikai galvenais.com domeinā.

 

Lai būtu vienkāršāk saprotam, kas man ir vajadzīgs, nedaudz par būtību.

 

Lietotājs user1 var piesaistīt savu domeinu cits1.com manai aplikācijai, norādot savā DNS mana servera ip un ierakstos aplikācijā, ka tas ir viņa domeins.

Tagad, ka kāds lietotājs user2, kurš ir ielogojies galvenais.com, griežas pie cits1.com lapas.

cits1.com lapa sastāv no:

1)aplikācijas daļas, kurā ir jāuzrāda user2 profila informācija un jāvar izdarīt dažas ajaxīgas darbības kā user2 lietotājs (piemēram nobalsot).

2)user1 lietotāja ievietotā daļa, kas būtībā var būt jebkāda informācija, tai skaitā javascript.

 

 

 

Pāsreizējais viens no risinājumiem ir tāds, ka daļas, kas attiecas uz aplikāciju: balsošanas poga, user2 profila dati, ir kā ifreimi, kuri atrodas uz galvenais.com, tāpēc var identificēt ielogoto lietotāju un veikt darbības, kamēr visa pārējā informācija ir no cits1.com domeina un tās javascript nevar piekļūt šij informācijai.

Bet man šī ideja nepatīk, jo var gadīties, ka funkcionalitāte augs un nāksies šo ifreimu skaitu krietni palielināt, tādā veidā katrs requests uz cits1.com tiks pavadīts ar kaudzi ifreimu requestiem.

Meklēju elegantāku risinājumu.

Link to comment
Share on other sites

lietotājs user1 ir reģistrējies sistēmā galvenais.com, caur kuru viņš var izveidot kādu aplikāciju (forumu, blogu, soc. portālu, answers portālu, slud dēli, vizītkartes lapi, utt. visu ko piedāvā attiecīgā sistēma) un piesaistīt tai savu domeina vārdu cits1.com

 

lietotājs user2 ir reģistrējies un ielogojies galvenais.com, nonākot cits1.com portālā, visam jānotiek tā, it kā viņš būtu ielogojies arī tur, respektīvi viņš uzreiz var komentēt, rakstīt postus, atbildes, respektīvi darīt visu kā jau ielogojies lietotājs.

Link to comment
Share on other sites

Varbūt to autorizāciju var taisīt serveru starpā? galvenais.com pa kaut-kādu kanālu aizsūta uz cits1.com info, ka tāds un tāds useris ir ielogojies ar tādām un tādām tiesībām. Atpakaļ no cits1.com dabū superduper cepumiņu, ko apmeklētājs var tālāk izmantot priekš cits1.com (cookie vai url parametrs).

 

Kanāls, protams, šifrēts (SSL? SSH?, ...?), pieeja tikai no noteiktas IP un/vai ar noteiktu atslēgu/sertifikātu.

Edited by marrtins
Link to comment
Share on other sites

- cits1.com var saturēt lietotāju ievietotu javascriptu, tāpēc lietotāja identifikācijas sistēmai jābūt tādai, lai to nevar pārķert šis uz cits1.com ievietotais lietotāju javascript.

Šaubos, ka tas ir iespējams. Kaut-kāds cepums taču ir jābīda, lai saprastu, kādā kontekstā darbojas pieprasījums? Attiecīgi, neredzu iemeslu, kāpēc ar JS nevarētu tur visu pārķert. Iespējams, ka nesapratu pašu procesu.

Link to comment
Share on other sites

Nekāds speciāls kanāls nav vajadzīgs, visi domeini ir uz viena servera. user1, kurš taisa cits1.com, norāda savā DNS mana servera ip.

 

Pašreizējie nepilnīgie varianti:

1)cepums varētu atrasties tikai uz galvenais.com un tad, teiksim cits1.com iklūdo js failu no galvenais.com, kurš netiek kešots un saturs funkcijā iekapsulētu sesijas id:

 

galvenais.com/darbibas.js

$(function(){
 $('.vote').click(function(){
   sessid='ASDFASDFASDFASDFSDFGSDF';
   $.post('/ajax/vote',{voteid:$(this).attr('voteid'),sessid:sessid});
 });
});

 

vai

 

function vote(){
 sessid='ASDFASDFASDFASDFASDFASDF';
 $.post('/ajax/vote',{voteid:$(this).attr('voteid'),sessid:sessid});
}

 

šādos gadījumos cits1.com js nevar tikt klāt sesijas id, bet var tikt klāt visām funkcijām.

 

mīnusi:

-katreiz jālēdē liek js fails

-svešais javaskripts, lai arī netiek klāt sessid, var simulēt noteiktas (tās, kas konkrētajā lapā paredzētas) darbības kā ielogotais lietotājs.

 

2)otrs variants ir tāds, ka cits1.com varētu saturēt ifreimus no galvenais.com, piemēram, tur, kur jārāda ielogotā lietotāja profila dati, tur viens ifreims, tur, kur, piemēram, ir komentāra pievienošanas lauks, tur otrs ifreims, utt. Bet tādā veidā to ifreimu sakrājās diezgan daudz, gan daļa ifreimu varētu būt tādi, kuri varētu kešoties. Tākā ifreimi ir no galvenais.com, tad arī līdzi sev nes autentifikācijas cookijus un tākā atrodas citā domeinā, tad cits1.com js nevar tik klāt šij funkcionalitātei.

 

mīnusi:

-pie funkcionalitātes paplašināšanas lapa sastāvēs no daudziem ifreimiem, kas šķiet diezgan slikta lapas struktūra.

Link to comment
Share on other sites

Ir gadījies viens sakarīgs gadījums ar flash, tur laikam nečekojot requestus apjāt nevarētu nekādi.

Sākumā ir logina flash un tad jau tālāk requesto uz kādu no serveriem. Pie konektēšanās ar konkrētu serveri jūtama bija tāda kā aizture minimāla un iespējams ielādēja vel kādu moduli lai tiek tālāk.

Pie lieliem apmeklējumiem tas varbūt arī ir smagi.

Taču tas nav mans lauciņš īsti.

Esmu paķidājis draugiem.lv fermu, kad palika žēl cilvēku apkārt kas kļuva bezmaz datoratkarīgi no tā, bet nu tā neko daudznejēdzu no tā.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...