2014-06-13 19 views
12

Moja konfiguracja produkcja jest następujący:ASP.NET OAuth mający problemy z URL Przepisz

  • M1 - ASP.NET Website
  • M2 - IIS URL Przepisz 2.0 + ARR 3,0

Używanie IIS URL Rewrite każde żądanie m2, powiedzmy http: // m2 /app/login.aspx zostanie przekierowany do M1, http: // m1/app/logi n.aspx.

W witrynie M1 na stronie internetowej wdrożono oprogramowanie ASP.NET Open Auth do korzystania z zewnętrznego uwierzytelniania Google. Gdy użytkownik kliknie przycisk Google, przeglądarka zostanie przekierowana na stronę logowania Google, aby umożliwić użytkownikowi uwierzytelnianie.

Ale gdy strona jest dostępna z M2, URL przekierowania generowanego przez .net OAuth (https: // accounts.google.com/[query string]) przekierować do Google, jest zastępowany przez URL Rewrite jako http: // m2/[zapytanie-ciąg].

Tak więc, aby było jasne; gdy żądanie jest uwierzytelniane przez zewnętrznego dostawcę uwierzytelnienia, zwracane jest 302 przekierowanie. Często forma ta może wyglądać następująco:

nagłówki odpowiedzi:

...

Lokalizacja: https: // accounts.google.com/o/OAuth2/auth big_long_query_string

...

To przekierowanie jest tworzony przez serwer (M1), który znajduje się za serwerem proxy (M2 - IIS URL Przepisz 2.0 + ARR 3.0). Więc serwer przepisać przepisuje nagłówek lokalizacji do:

nagłówki odpowiedzi:

...

Lokalizacja: http: // M1/o/OAuth2/auth big_long_query_string

...

Potrzebujemy reguły, która nie przepisuje adresu URL lokalizacji podczas przekierowania. Może również kierować tylko na określone przekierowania. Zazwyczaj wspomniane zachowanie jest pożądane, ponieważ wszystkie przekierowania są przekierowywane do głównego serwera proxy. Czy ktoś może zaproponować rozwiązanie lub obejście dla niektórych przekierowań?

+1

Czy kiedykolwiek wypracować rozwiązanie, teraz byłby dobry czas, aby odpowiedzieć, jeśli nie, mam dokładnie ten sam problem. –

+0

Odpowiedzmy na to frajerze !!!!!!! –

+0

Musimy mieć reguły przepisywania, aby sprawdzić, co jest nie tak. –

Odpowiedz

0

Wyjazd Application Request Routing ustawienia pod IIS> [Server]> Zapytanie Zastosowanie Routing i na bocznym pasku Operacje Ustawienia serwera proxy dla > Odwróć przyjmującym przepisywania w nagłówkach odpowiedzi. Aby zachować pożądane zachowanie, odznacz pole wyboru. To ustawienie na poziomie serwera, korzystaj z niego w sposób odpowiedzialny.Można również edytować . Zasadniczo wstaw/aktualizuj następujący wiersz w pliku pomiędzy tagami <system.webServer>.

<proxy enabled="true" reverseRewriteHostInResponseHeaders="false" /> 

Przypuszczam to ustawienie będzie dostępna na stronie też, ale moje próby na plikach web.config dla ustawienia proxy nie potwierdziły tego.

0

Sprawdź global.asax. to moduł HTTP. Wszystkie żądania przechodzą przez ten plik i inne moduły, zanim dotrą do programów obsługi stron. Służy do wykonywania określonych zadań na żądanie lub odpowiedź, jak url routingu błąd globalna manipulacja itd. Plik ten jest wykorzystywany do wdrożenia aplikacji oraz poziomu sesji zdarzenia, takie jak:

Application_Init - wywoływane, gdy Aplikacja najpierw inicjuje

Application_Start - zwolniony po uruchomieniu aplikacji

Application_End - ostateczne wydarzenie zwolniony, gdy aplikacja kończy lub czasy się

session_start - zwolniony po raz pierwszy sesja użytkownika jest początek ed

Application_BeginRequest - zwolniony z każdego nowego wniosku

Application_EndRequest - zwolniony, gdy aplikacja kończy

Application_AuthenticateRequest - zdarzenie wskazuje, że wniosek jest gotowy zostać uwierzytelniona.

Application_Error - zwolniony po wystąpieniu nieobsługiwany błąd w aplikacji

Session_End - zwolniony, gdy jedna sesja lub użytkownik kończy się czasy.

0

Udało mi się rozwiązać ten sam problem z regułą ruchu wychodzącego w usługach IIS. Musisz więc utworzyć regułę wychodzących w IIS w module przepisywania URL, aby zmodyfikować nagłówek lokalizacji. Musisz sprawdzić nagłówek statusu 302 jako warunek i podać adres URL dopasowania i adres działania dla nagłówka Lokalizacja. Poniżej znajdują się kroki z opisanego artykułu.

Modyfikowanie Lokalizacja Nagłówek z IIS URL Przepisz

  1. Przejdź do funkcji przepisywania URL dla swojej strony i kliknij Dodaj regułę (y) ...
  2. Wybierz z Warunkiem rozwijanej.
  3. Kliknij Dodaj w oknie dialogowym, które się pojawi:
  4. Wprowadź {RESPONSE_STATUS} w polu wprowadzania warunków i 3 [0-9] [0-9] w polu wzorca.
  5. Kliknij OK.
  6. Wybierz opcję Server Variable z listy rozwijanej Matching scope.
  7. Wprowadź RESPONSE_Location jako nazwę zmiennej.
  8. W polu Wzorzec wprowadź wyrażenie regularne odpowiadające adresom URL, które wytwarza system zaplecza (np. http://local/page)
  9. W polu Wartość akcji wprowadź poprawny adres URL (np.http://example.com/page)
  10. Kliknij Zastosuj, a gotowe!

referencyjny: Handling 301 and 302 redirects with IIS 7 URL Rewrite