2016-03-22 11 views
0

Unsere API verwendet OWIN OAuth Bearer Token. Es funktionierte ordnungsgemäß in einem Endpunkt wie https://server1.url/token.asp.net owin Token ignorieren httpredirect

Jetzt möchten wir die API zu einem zweiten Server (Server2) umleiten. Wir haben den IIS in Server1 so konfiguriert, dass alle Anfragen an die API an Server2 weitergeleitet werden. Soweit uns bekannt ist, haben diese Konfigurationen einen "httpredirect" Eintrag in der web.config hinzugefügt.

Das Problem besteht nun darin, dass der Token-Endpunkt nicht umgeleitet wird. Alle anderen Endpunkte werden ordnungsgemäß zu server2 umgeleitet, aber der Token-Endpunkt wird nicht umgeleitet, er wird normal in server1 verarbeitet, und wir verstehen nicht, warum.

Hat jemand eine Vermutung?

+0

Wenn 'httpRedirect' aktiviert ist, wird jede Anforderung an die Anwendung von IIS behandelt, und der IIS sendet einfach den leeren Textkörper mit dem Status '301' in den Headern. Dann ist der Kunde für weitere Anfragen verantwortlich. Aber es ist wirklich seltsam, dass der IIS die 'server1/token' Anfrage nicht umleitet. Was passiert, wenn Sie den Anwendungscode entfernen und nur die web.config mit der Umleitung belassen? – tenbits

+0

Danke für die Idee. Wir werden es bald versuchen. – JoaoRibeiro

Antwort

1

Ja, es scheint, OWIN-Pipeline beginnt, bevor IIS die Anforderung umleiten kann. httpRedirect wird von HttpRedirection Module behandelt. Und dieses Modul wird vom IIS nach dem OWIN-Modul registriert, das vor dem Start der Anwendung registriert wird PreApplicationStart.

So entfernen Sie die Anwendung selbst und lassen Sie nur die web.config.

+0

Diese Änderung hat das Problem teilweise behoben. Die Anfrage wurde umgeleitet, aber wir erhielten keine akzeptable Antwort. Nach dem Änderungsvorschlag von @tenbits fiel auf, dass die POST-Anfragen als GET an den neuen Server abgefragt wurden. Ein ähnliches Problem wurde hier gemeldet: http://programmers.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect Wie es heißt, haben wir den Responde HTTP-Code auf 307 geändert. Dies behoben der zweite Teil des Problems. – JoaoRibeiro