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ń?
Czy kiedykolwiek wypracować rozwiązanie, teraz byłby dobry czas, aby odpowiedzieć, jeśli nie, mam dokładnie ten sam problem. –
Odpowiedzmy na to frajerze !!!!!!! –
Musimy mieć reguły przepisywania, aby sprawdzić, co jest nie tak. –