0

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

  1. https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-net-upgrading-from-mobile-services

  2. https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-microsoft-authentication

... 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.

Antwort

0

Gemäß Ihrer Beschreibung habe ich angenommen, dass Sie die JavaScript-Clientbibliothek für Azure Mobile Apps verwenden.Ich habe dieses Problem auf meinem lokalen Seite und fand ich könnte das gleiche Problem auftritt, wie Sie wie folgt erwähnt:

enter image description here

Dann habe ich versucht, es zu azur Web-App (https://brucechen-mobile.azurewebsites.net/login.html) zu implementieren, fand ich es könnte funktionieren wie folgt: Fix über die Ripple Probleme

enter image description here

nach sucht die Bahn I dieser blog eine ähnliche issue und verweisen gefunden. Ich log auf azur Portal und wähle meine Handy-App, klicken Sie dann auf „Alle Einstellungen> CORS“, die URL für meine lokalen Web-Anwendung wie folgt hinzufügen:

enter image description here

Klicken Sie dann auf „EINSTELLUNGEN> Authentifizierung/Autorisierung“ fügen sie das ZUGELASSEN AUSSEN Redirect URLs wie folgt:

enter image description here

Basierend auf den obigen Einstellungen, könnte es auf meiner lokalen Seite wie erwartet wie folgt:

enter image description here

+0

Ich hatte die CORS zuvor, aber es war die "Erlaubte externe Redirect Urls", die mich aufgelegt hatte. Danke für die Hilfe @BruceChen! – dmac314