codez Posted December 30, 2010 Report Share Posted December 30, 2010 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. Quote Link to comment Share on other sites More sharing options...
Blitz Posted December 30, 2010 Report Share Posted December 30, 2010 (edited) te iespējams jau kas atbildēts: http://misc.lv/?id=33 Edited December 30, 2010 by Blitz Quote Link to comment Share on other sites More sharing options...
codez Posted December 30, 2010 Author Report Share Posted December 30, 2010 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. Quote Link to comment Share on other sites More sharing options...
Blitz Posted December 30, 2010 Report Share Posted December 30, 2010 (edited) 1) tu jau rekvestam vari pievienot ko supersecret ko zin tikai īstās lapas. mulkibas Edited December 30, 2010 by Blitz Quote Link to comment Share on other sites More sharing options...
briedis Posted December 30, 2010 Report Share Posted December 30, 2010 Sesijas id nevar sūtīt kādā šifrētā veidā? Ir tak kaut kāda Mcrypt bibliotēka... Quote Link to comment Share on other sites More sharing options...
codez Posted December 30, 2010 Author Report Share Posted December 30, 2010 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. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted December 30, 2010 Report Share Posted December 30, 2010 Varbūt sāc ar to, ka izstāsti, ko tieši tu centies uzbūvēt? Varbūt ir vērts vienkārši padomāt pavisam citā virzienā? Quote Link to comment Share on other sites More sharing options...
codez Posted December 30, 2010 Author Report Share Posted December 30, 2010 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. Quote Link to comment Share on other sites More sharing options...
marrtins Posted December 30, 2010 Report Share Posted December 30, 2010 (edited) 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 December 30, 2010 by marrtins Quote Link to comment Share on other sites More sharing options...
marrtins Posted December 30, 2010 Report Share Posted December 30, 2010 - 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. Quote Link to comment Share on other sites More sharing options...
codez Posted December 30, 2010 Author Report Share Posted December 30, 2010 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. Quote Link to comment Share on other sites More sharing options...
mounkuls Posted December 31, 2010 Report Share Posted December 31, 2010 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ā. Quote Link to comment Share on other sites More sharing options...
dot Posted December 31, 2010 Report Share Posted December 31, 2010 SSO http://www.jasny.net/articles/simple-single-sign-on-for-php/ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.