WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hur kan jag autentiserar jag min webservice? (https://www.wn.se/forum/showthread.php?t=1039452)

weirdbyte 2009-12-05 17:17

Hur kan jag autentiserar jag min webservice?
 
1 bifogad(e) fil(er)
Hallå.

Här kommer en fråga angående säkerhet och autentisering angående inkommande "requests" hur jag ska kunna validera att avsändare är den han påstår sig vara.

Det är så att på min sida så har jag en service som tar emot data. Jag har även flera kända användare. Exempel på en användare kan vara Erik.

Tanken är att min service ska kunna ta emot data från olika användare.

Problemet är att jag vet inte bästa sättet att kontrollera att datan jag får är verkligen från den användaren den påstår sig vara.

Se bifogade bilden.

Fakta:
- Det går att lägga till fler attribut på användaren
- Användaren är inte bunden till en specifik ip

Min fråga är:
Vilka autentiseringslösningar kan jag använda som även sätter stop för replikation och man in the middle attack?

qson 2009-12-05 17:42

Citat:

Ursprungligen postat av weirdbyte (Inlägg 20334220)
Hallå.

Här kommer en fråga angående säkerhet och autentisering angående inkommande "requests" hur jag ska kunna validera att avsändare är den han påstår sig vara.

Det är så att på min sida så har jag en service som tar emot data. Jag har även flera kända användare. Exempel på en användare kan vara Erik.

Tanken är att min service ska kunna ta emot data från olika användare.

Problemet är att jag vet inte bästa sättet att kontrollera att datan jag får är verkligen från den användaren den påstår sig vara.

Se bifogade bilden.

Fakta:
- Det går att lägga till fler attribut på användaren
- Användaren är inte bunden till en specifik ip

Min fråga är:
Vilka autentiseringslösningar kan jag använda som även sätter stop för replikation och man in the middle attack?

Jag har gjort en liknande service, och jag löste det på följande sätt:
Varje användare har ett lösenord.
I varje request skapas en kontrollsumma, t.ex. md5, av "postad data och lösenordet"
Lösenordet skickas inte med.
När requesten valideras gör den motsvarande kontrollsumma av "postad data (utan kontrollsumma) och lösenord".
Om kontrollsummorna inte stämmer har inte användaren postat formuläret.

Detta tillvägagångssätt används bl.a. av Payson och Facebook Connect.

weirdbyte 2009-12-05 17:51

Blir det då inte lätt att gissa lösenordet?

Ha en dator igång som MD5(data+*gissning av lösenord) tills summan är samma som skickades i meddelandet?

digiArt 2009-12-06 09:55

Citat:

Ursprungligen postat av weirdbyte (Inlägg 20334226)
Blir det då inte lätt att gissa lösenordet?

Ha en dator igång som MD5(data+*gissning av lösenord) tills summan är samma som skickades i meddelandet?

Det kan tänkas motarbetas genom att bara tillåta X antal felaktiga postningar, sen låses det kontot för vidare requests och måste låsas upp manuellt. Exempelvis genom inlogg på någon form av admin-sida, alternativt att det stannar låst i ett par minuter och låses sen automatiskt upp igen vid nästa korrekta request.

qson 2009-12-06 11:20

Facebook har iallafall löst det så att man måste skicka med ett "löpnummer" i $data som tickar upp för varje request. Då får du en unik kontrollsumma för varje request.
Dock osäker på om den tickar upp även vid felaktig request...

weirdbyte 2009-12-06 19:16

Citat:

Ursprungligen postat av digiArt (Inlägg 20334277)
Det kan tänkas motarbetas genom att bara tillåta X antal felaktiga postningar, sen låses det kontot för vidare requests och måste låsas upp manuellt.

Det är inte så vidare smart heller, då kan man enkelt sabotera för andra.

studiox 2009-12-06 20:38

Du kan ju göra en riktig Webservice istället, då kan du lägga in en auth() funktion. En sådan använder typ alla "riktiga" Webservices. En auth returnerar oftast en checksum/key/etc som du måste använda för varje ytterligare anrop du gör. Nyckel gäller bara i en session. När du kör en auth måste du ange exempelvis anv.+ lösenord eller någon API nyckel. Dessa skickar du med fördel över https om du vill vara säkrare(e)

weirdbyte 2009-12-06 20:53

Då blir det väl dubbel-anrop. Hade hoppats på att det inte skulle behövas :)


Alla tider är GMT +2. Klockan är nu 19:25.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson