2013-03-30 4 views
5

Pracuję nad interfejsem API OEST dla OAUTH 2 dla strony internetowej, nad którą pracuję. Mamy oficjalną natywną aplikację mobilną, która korzysta z tego interfejsu API i planuje udostępnienie interfejsu API innym programistom. Nasza natywna aplikacja mobilna będzie mieć więcej uprawnień niż aplikacje innych firm. Robię to, ustawiając uprawnienia na podstawie identyfikatora klienta lub identyfikatora aplikacji. Używam aplikacji passwordgrant type dla oficjalnej aplikacji i implicitgrant type dla aplikacji innych firm.W jaki sposób uwierzytelnić zaufaną aplikację przy użyciu OAUTH 2

Ale problemem jest to, że jak nie używasz client_secret W obu przypadkach 3rd party może być w stanie uzyskać podwyższone uprawnienia przez jakiś kradzież naszej oficjalnej client_id i używając go, aby uzyskać dostęp do podwyższonymi uprawnieniami w API, które jest wyłącznie do oficjalnej aplikacji.

Czy istnieje jednak sposób, aby temu zapobiec? Jak robi to oficjalna aplikacja na Facebooku lub Twitterze?

Odpowiedz

1

można używać znaków jest to skrót informacji (client_id, Official app, day ...) do stosowania

do „Dzień” w celu uzyskania codziennie nowy token które minimalizują drastyczny

i to żetony do 3rd party (client_id, 3rd party ...) Więc w swoim API dodać func informacje o tokenach:

Wszystkie prośby od Api muszą być za pośrednictwem protokołu SSL, które następnie są sprawdzane na serwerze w celu ustalenia, czy żądanie ma zostać przetworzone/odrzucone.

+0

Nie zrozumiałem. Mówisz, że powinienem używać tokenów OAuth z (client_id, Oficjalna aplikacja, dzień, ...) itd. W API, gdy klient zażąda tokena. Co to za różnica? A co masz na myśli przez "Oficjalna aplikacja"? – ajaybc

+0

"Oficjalna aplikacja" i "trzecia strona" to ciąg lub kod, za pomocą którego można zidentyfikować źródło żądania; – Abdessamad