Avatar billede mecenor Nybegynder
27. juli 2005 - 17:30 Der er 16 kommentarer og
2 løsninger

Identifikationstjek ved link mellem 2 domæner II

(Dette spørgsmål var tidligere under http://www.eksperten.dk/spm/634881, men pga. sværhedsgrad er pointindsatsen ændret)

Hvis en bruger er logget ind på domæne1 kommer der et link til domæne2. Ved at følge dette link, kommer brugeren ind på sider på domæne2, der kræver login.
Jeg vil lave et tjek på domæne2, der automatisk giver brugeren adgang, hvis de kommer fra domæne1 og der ’medsendes’ en bestemt kode(ikke brugerens kode, men hemmelig, hemmelig kode).
Tjek på hvilket domæne brugeren kommer fra har jeg lavet sådan:
if Request.ServerVariables("REMOTE_HOST") = "domæne1" then
Er der andre (bedre) løsninger?

Mht. et kodetjek er jeg på bar bund; hvordan sender man noget mellem 2 domæner, der ikke kan ses af brugeren? En hidden variable fra formular kan jo ses...

Jeg er bedst bekendt med ASP/VB og javascript.

Arne V. forslog:
”hvad med at du efter successfuld login på domæne1 nederst i login validerings scriptet gemmer en krypteret GUID i session og sender en HTTP request til domæne2 med et brugernavn/password som registrerer den krypteret GUID og det tilhørend ebrugernavn som være logget ind

så genererer du links med den krypterede GUID og domæne2 ved så at den request er logget ind og med hvilket brugernavn

du skal nok også lige have noget timeout på den godkendelse

men så burde det vil virke”

Jeg har desværre ikke prøvet at generere krypteret GUID eller sende HTTP request mellem 2 domæner før...

Nogle bud?

(Og til Arne V.: Håber det er OK at gengive dit forslag, jeg 'betaler' gerne :)
Avatar billede ksoren Nybegynder
27. juli 2005 - 19:04 #1
Jeg tror ikke du behøver skjule eller kryptere noget. Dette bør være sikkert nok:

På server1 registrerer du brugerens ip, session id samt tidspunkt ved login. Tidspunktet opdaterer du løbende, når brugeren foretager sig noget på sitet.

På server1 laver du et check.asp script, som kun kan kaldes fra server2's ip.

check.asp tager fra server2 følgende parametre:
    user_id
    user_ip
    session_id

Ud fra disse parametre + nuværende tidspunkt, kan du bestemme om den pågældende bruger er logget ind

Linket til server2 sammensætter du af user_id og session_id



Server2
Ved kontrol kaldes check.asp på server1

brugerens ip hentes med REMOTE_HOST

user_id og session_id er medsendt fra klienten

Så vi kalder: check.asp?user_id=x&session_id=y&user_ip=z
Avatar billede ksoren Nybegynder
27. juli 2005 - 19:09 #2
Kontroller med serveren hvad den har af installerede komponenter, til at lave en http request ud mod verden
Avatar billede ksoren Nybegynder
27. juli 2005 - 19:11 #3
Hvis de to sites tilfældvis kører over samme database, gør det tingene lidt nemmere
Avatar billede arne_v Ekspert
27. juli 2005 - 19:12 #4
du vil kalde den anden vej - server2 checker hos server1 fremfor at server1
præ autoriserer på serve2 - det virker sikkert lige så godt

der er en grund til at jeg valgte en krypteret GUID som id - den skal være
100% unik også selvom 2 clients sidder bag samme firewall med samme IP - og
det skal være umuligt at gætte en andens id udfra sin egen id
Avatar billede mecenor Nybegynder
27. juli 2005 - 20:58 #5
Server1 og server2 deler ikke database og jeg har ikke magten over server1 (men skal finde løsningen).

Alright ksoren, det lyder godt. Hvordan kaldes check.asp på server1 fra server2?
arne_v: jeg skulle nok have forklaret det bedre, men link til server2 når brugeren er logget ind på server 1, er kun et link af mange til forskellige servers, hvor brugeren kun vælger et eller 2 af dem. Krypteret GUID lyder godt, jeg prøver at overbevise server1, når jeg snakker med dem(den) i morgen.
Avatar billede mecenor Nybegynder
28. juli 2005 - 12:09 #6
Nogen der kan hjælpe med hvordan man kalder et script fra server2, der ligger på server1?
Avatar billede arne_v Ekspert
28. juli 2005 - 12:21 #7
Du skal have en komponent.

Det var det ksoren fiskede efter 27/07-2005 19:09:06.

XMLHTTP, WinHttp etc. mener jeg at de hedder.
Avatar billede mecenor Nybegynder
28. juli 2005 - 12:28 #8
OK, så det afhænger af server1's opsætning. Tak.
Avatar billede mecenor Nybegynder
28. juli 2005 - 12:52 #9
Kan man fake et svar på fx Request.ServerVariables("HTTP_REFERER")?

Det er nok ikke sikkert nok i dette tilfælde, men hvis nu det link der sender brugeren fra server1 til server2 kun findes på en side, der kræver at brugeren er logget ind, kunne man så nøjes med at tjekke at brugeren kom fra fx loggetind.asp med Request.ServerVariables("HTTP_REFERER")?
I.e. bruger logget ind på server1, link til server2 vises på loggetind.asp, server2 tjekker om brugeren kom fra loggetind.asp på server1...
Avatar billede arne_v Ekspert
28. juli 2005 - 12:57 #10
HTTP_REFERER er ren convenience - det er intet værd som sikkerhed

der er muligvis browsere hvor det kan sættes

men det kan ihvertfald sættes i programmer herunder også hacker scripts
Avatar billede mecenor Nybegynder
28. juli 2005 - 13:07 #11
OK, takker
Avatar billede mecenor Nybegynder
02. august 2005 - 19:13 #12
OK, jeg vil gerne dele pointene mellem jer, læg nogle svar
Avatar billede arne_v Ekspert
02. august 2005 - 19:14 #13
svar fra mig
Avatar billede mecenor Nybegynder
04. august 2005 - 20:06 #14
Alright, hvis der ikke kommer et svar fra ksoren, som jeg kan give point, ville fremgangsmåden så være:
selv at lægge et svar, dele de 200 point mellem arne_v og migselv og så oprette et spg. med 100 point til ksoren?
Avatar billede arne_v Ekspert
04. august 2005 - 20:10 #15
tja - det kan du jo blive nødt til

men giv ham nu lidt tid - det er jo stadig sæson for ferie
Avatar billede mecenor Nybegynder
04. august 2005 - 20:13 #16
Det ska jeg nok :)
Avatar billede mecenor Nybegynder
28. august 2005 - 17:10 #17
Kan vi få et svar fra ksoren?
Avatar billede mecenor Nybegynder
30. august 2005 - 00:07 #18
Opretter et spg. med point til ksoren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Forsvarets Cyberdivision søger SAP-medarbejder til Roller & Autorisationer

Capgemini Danmark A/S

Open Application (Denmark)

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Netcompany A/S

IT Consultant