2013-11-27 12 views
5

Widziałem inne pytania na ten temat dotyczące tego (here, here i here), ale nie jestem zadowolony z żadnego rozwiązania, więc proszę o to ponownie. Rozpoczynam aplikację internetową, która będzie wykorzystywać OAuth od wielu dostawców (Google, Facebook, Twitter, Yahoo) do uwierzytelniania. Staram się znaleźć konfigurację odpowiednią do zastosowania zarówno w lokalnym środowisku programistycznym, jak iw środowisku produkcyjnym.Używanie OAuth do środowisk programistycznych i produkcyjnych

wiodącego rozwiązania znalazłem się zarejestrować wielu aplikacji w ramach każdego dostawcy, przyjmując inny klucz klienta i tajny dla każdego:

„My App produkcji” - o zwrotnej URI do http://www.myapp.com/callback

"My App Development" - o oddzwonienie URI do http://local.myapp.com/callback

Dodaj wpis do pliku hostów lokalnych wskazać local.myapp.com do 127.0.0.1 i S konfiguracja dla twojej aplikacji do używania właściwych kluczy konsumenckich w oparciu o środowisko, i jesteś dobry, prawda?

Ale moja aplikacja to responsive i muszę przetestować środowisko programistyczne uruchomione na moim komputerze z wielu innych urządzeń, takich jak mój iPhone i iPad, z których żaden nie będzie w stanie rozwiązać identyfikatora URI wywołania zwrotnego wywołania.

Załóżmy, że mam już serwer DNS w mojej sieci i jestem w stanie dodać wpis dla local.myapp.com zamiast mojego pliku lokalnego hosta i mam teraz dostęp do mojej instancji programistycznej z dowolnego urządzenia w sieci.

Ale mój zespół programistów działa w tej samej sieci lokalnej. Teraz local.myapp.com wskazuje na to samo IP dla wszystkich. Wróćmy do ustawienia pliku hosts na każdym komputerze programisty, aby wszyscy mogli pracować niezależnie od swojej stacji roboczej. Teraz nikt nie może ponownie przetestować ich instancji deweloperskiej na swoim iPhonie. Wydaje się, że nie jest to właściwa odpowiedź dla każdego programisty, aby zarejestrować aplikację u dostawcy, aby móc określić unikalny identyfikator UR zwrotnego.

Zwykle, gdy schodzę w chwasty ze skomplikowanym rozwiązaniem dla pozornie prostego problemu, zwykle oznacza to, że robię coś zasadniczo złego. Czy brakuje mi czegoś o OAuth, czy nie ma być tak używany? Skłaniam się do całkowitego zerwania OAuth i po prostu idę z OpenID (wymagana rejestracja aplikacji nie jest wymagana i można określić identyfikator URI zwrotnego z poziomu aplikacji), ale potem tracę dwóch dużych hakerów na Facebooku i Twitterze. Nie potrzebuję żadnych danych użytkownika, fajnie jest je mieć, jeśli są dostępne. Czy ktoś może odesłać mnie z powrotem do OAuth?

+0

tylko do testowania, prawda? Dlaczego nie każda aplikacja internetowa ma być katalogiem wirtualnym? – codemonkeh

+0

Nie podąża za tym, do czego zmierzasz. Czy możesz rozwinąć? – schmimd04

+0

Czy kiedykolwiek znalazłeś rozwiązanie? Walczę z dokładnie tym samym; dostawcy oauth nie zezwalają na używanie symboli wieloznacznych, więc nie mogę mieć "alice.dev.myapp.com" i "bob.dev.myapp.com", ale jeśli wszyscy programiści dzielą się 'dev.myapp.com' nie wiem, jak wskazać tablety i telefony u właściwego programisty. Utworzenie punktu wejścia oauth na programistę wydaje się być jedynym sposobem. – mczepiel

Odpowiedz

0

napisałem następującą odpowiedź o app szyn I napisał:

OAuth2 in development and production

Był to klejnot zwany Figaro, który robił za configs env dla Google OAuth2.

+0

To tylko wygląda na wymyślne narzędzie do zarządzania plikami właściwości. A co z testowaniem aplikacji uruchomionej na moim komputerze z iPhone'a, gdy wywołanie zwrotne OAuth przechodzi na local.myapp.com? – schmimd04

0

Nie mogę mówić o FB lub Twitterze, ale w implementacji Oauth Google można zarejestrować kilka różnych adresów URL wywołań zwrotnych. Potrzebujesz więc pewnej logiki w swojej aplikacji, która wyczuwa, że ​​jest w trybie testowym, a następnie uruchamia przepływ Oautha z odpowiednim adresem URL wywołania zwrotnego. Są minusy, np. Starcia pomiędzy żetonami odświeżającymi na żywo i testowymi, ale są one łatwe do opanowania.

W mojej aplikacji mam singleton, który zarządza tym wszystkim.Gdy moja aplikacja musi uruchomić przepływ Oautha, wywołuje singleton z adresem URL żądania i innymi znaczącymi danymi (np. Flagą debugowania), a singleton zwraca poprawny adres URL wywołania zwrotnego, identyfikator klienta itp.

+0

Oczywiście, mogę obsłużyć logikę, aby wiedzieć, czy to produkcja lub rozwój i użyć właściwego klucza/sekretu konsumenta. Ale co z testowaniem z mojego iPhone'a w dev z uri, którego mój iPhone nie jest w stanie rozwiązać? Muszę przetestować urządzenia mobilne w fazie rozwoju. – schmimd04

+0

To jest problem z DNS? Użyj czegoś takiego jak AWS Route 55 i zarejestruj tam swój serwer dev, aby publicznie go rozwiązać. Czy iPhone może być skonfigurowany do korzystania z serwera proxy? jeśli tak, może możesz również rozwiązać problem z niektórymi regułami routingu proxy. Jeśli to pomoże, z przyjemnością skonfiguruję serwer dev jako poddomeny w jednej z domen, którymi zarządzam. – pinoyyid

0

Muszę jeszcze znaleźć mniej instrukcja podejście, które umożliwia dev dostęp do wszystkich zainteresowanych urządzeniami:

  1. Assign maszynę każdy programista w stałym IP poprzez system DHCP sieci lokalnej na podstawie ich adresów MAC, lub (mniej zalecane) zostały im wybrać IP i nadziei dla najlepszego
  2. (opcjonalnie *) Przypisanie komputerowi każdego programisty nazwy hosta DNS w sieci lokalnej na podstawie tego adresu IP
  3. Zarejestruj wpis oauth dla programisty dla każdego dostawcy z nazwą hosta komputera programisty.
  4. Każdy programista konfiguruje swoją aplikację do korzystania z unikalnych tokenów dev oauth.

Zakładając, wszystkie urządzenia w sieci opierają się na tych samych serwerów DHCP i DNS, będziesz wtedy mógł odwiedzić alice.dev.myapp.com lub bob.dev.myapp.com z dowolnego urządzenia w sieci.

Uwaga: użytkownik będzie zarządzał konfiguracją oauth dla każdego innego środowiska oddzielnie, ale stosując to samo podejście.

Istnieją prawdopodobnie narzędzia do automatyzacji rejestrowania adresu IP maszyny i nazwy hosta programisty, aby ułatwić tę część układanki. Rejestrowanie konfiguracji oauth dla każdego dostawcy na dev jest najbardziej żmudnym krokiem.

UPDATE

* Można pominąć część DNS jeśli używasz xip.io url np 10.0.0.123.xip.io, jeśli wiesz, że Alicja ma numer 10.0.0.123, ale nadal chcesz, aby ten adres był poprawiony, ponieważ nie chcesz aktualizować adresu URL dla tokenów oauth w kroku 4.

Powiązane problemy