Ich arbeite an einem Projekt, um eine Anwendung, die zuvor als Azure Mobile Service als Azure Mobile App gehostet wurde, erneut bereitzustellen. Diese Anwendung hat ein Frontend (gehostet als eine Web-App in Azure) und eine Backend-API (dies ist die Mobile App), die direkt vom Frontend-Javascript aufgerufen wird. Das Upgrade lief gut, bis ich anfing, an der Microsoft-Kontoauthentifizierung zu arbeiten. Nach den Anweisungen auf ...Azure Mobile App MSA-Authentifizierung Schwierigkeiten
... bekam die Dinge meist rollen. Meine Anwendung wurde im Microsoft Account Developer Center registriert, ich habe einen Redirect-URI nach dem https: // {{my_backend_mobile_app_name}} .azurewebsites.net/.auth/login/microsoftaccount/callback-Format angegeben, ich habe die Microsoft-Authentifizierung konfiguriert/Autorisierung im entsprechenden Blade meiner mobilen App in Azure mithilfe von ClientId/Secret aus dem Microsoft Account Developer Center. Die Dinge laufen am besten, wenn ich es ausprobiere: Ich kann zum Frontend meiner Anwendung gehen und auf die Schaltfläche "Anmelden" klicken. Ein neues Fenster öffnet sich mit der Microsoft-Website "Login.Live", wo ich aufgefordert werde, mich mit einem Microsoft-Konto anzumelden. Ich mache das erfolgreich und werde zu der Redirect-URL umgeleitet, die im Microsoft Account Developer Center angegeben ist, und in der Abfragezeichenfolge sind Code- und Statuswerte angehängt.
Die Seite, die angezeigt wird, wenn ich dorthin weitergeleitet werde, ist jedoch "Sie sind nicht berechtigt, dieses Verzeichnis oder diese Seite anzuzeigen". Wenn ich die URL kopiere, öffne einen neuen Tab, füge ihn ein und drücke Enter, es bringt mich zur Seite "Du hast dich erfolgreich angemeldet". Aber keiner der beiden Wege führt mich zurück zum Frontend meiner Anwendung, wo er mich anmeldet und auf der Seite weitermacht, da alles noch in dem neuen Fenster zum Anmelden läuft. Wenn ich das Fenster schließe, sieht der Authentifizierungsprozess das als 'Abbrechen' des Logins und erfordert, dass ich mich erneut anmelde (was den obigen Vorgang einfach wiederholt). Wenn ich das Fenster offen lasse und zurück zum Fenster mit meiner Frontend-Site gehe, wartet es immer noch auf eine Antwort vom Login-Prozess.
Das führt mich zu meiner Hauptfrage: Wie bekomme ich den Microsoft-Kontoauthentifizierungsprozess, um die Anmeldeantwort tatsächlich an meine Frontend-Site und nicht an das Anmeldefenster zurückzugeben?
Seitennotiz, Ich habe die SDKs sowohl für das Frontend als auch das Backend von den Mobile Service auf die Mobile App aktualisiert. Dazu musste ich eine OWIN-Middleware (gemäß den Anweisungen in Link 1 oben, unter der Überschrift 'Server-Projekt aktualisieren') zu meiner Backend-App hinzufügen. Meine aktuelle Hypothese ist, dass diese OWIN-Middleware nicht korrekt für die Authentifizierung konfiguriert ist und den Callback daran hindert, ordnungsgemäß zu funktionieren. So mache ich mich mit dem app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions());
Stück herum.
Ich hatte die CORS zuvor, aber es war die "Erlaubte externe Redirect Urls", die mich aufgelegt hatte. Danke für die Hilfe @BruceChen! – dmac314