Amazon Cognito: So verhindern Sie, dass beim Umleiten vom Browser zur Android-App der Fehler „redirect_mismatch“ angezeigt wird
Lesezeit: 6 Minuten
JHowzer
Ich versuche, ein Android-Projekt zu erstellen, bei dem ich einen Benutzer autorisiere, indem ich ihn in einem Browser bei Amazon Cognito anmelden lasse, was dann sollte zurück zu meiner App umleiten. Leider erhalte ich beim Öffnen des Browsers immer wieder diesen Fehler, anstatt die richtige Anmeldeseite zu erreichen:
In meiner AuthenticatorActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authenticator);
Uri authzUrl = Uri.parse("https://<myDomain>.auth.us-west-2.amazoncognito.com/login?response_type=token&client_id=<myClientId>&redirect_uri=myapp://mainAct");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, authzUrl);
startActivity(launchBrowser);
}
Ich kann nicht herausfinden, was ich hier falsch mache. Übersehe ich einen Schritt?
Hast du das jemals gelöst?
– Softino
9. August 2018 um 18:39 Uhr
Ich habe dies zum Laufen gebracht, nachdem ich meine Rückruf-URL(s) festgelegt habe. [you can define more than one which is why you need to specify the redirect_uri] und Definieren meines Anmeldeendpunkts. Gehen Sie zum Amazon Cognito-Entwicklerhandbuch, wo die Spezifikationen für den Anmeldeendpunkt definiert werden: https://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html Am Ende der Seite geben sie ein Beispiel. Auf dieser Seite wird beschrieben, welche Parameter erforderlich und welche optional sind.
– Valen
29. August 2019 um 18:23 Uhr
Ok, ich hinterlasse hier einen Leckerbissen für den, der ihn als nächstes finden könnte. Ich bin auf genau dasselbe Problem gestoßen, aber als Neuling bei Cognito und IdP/SSO hatte ich keine Ahnung, wie ich das beheben könnte. Hier ist, was ich getan habe, um dies schließlich zu beheben. Wir haben uns in einen externen Dienst integriert und diesen Fehler erhalten. Unter Chrome Developer Tools -> Network habe ich angefangen, die besuchten URLs aufzuzeichnen, dann habe ich die SSO-Integration erneut versucht. In der Liste wurde eine URL angezeigt, die Cognito mit einer Umleitung zur URL besuchte. Diese URL muss dieselbe URL sein, die unter der Callback-URL für Cognito aufgeführt ist.
Hoffentlich spart das jemandem etwas Zeit in der Zukunft.
Kurz gesagt … die redirect_uri -Parameter in der Anfrage an den Cognito-Endpunkt muss mit der „Rückruf-URL“ übereinstimmen, die in den App-Client-Einstellungen des Cognito-Benutzerpools gefunden wird.
– Lqueryvg
3. April 2020 um 8:06 Uhr
Damit hatte ich auch zu kämpfen. Ich hatte das Root-Set richtig, aber vergessen, den Pfad anzugeben. So hatte ich https://192.168.0.101;3000/ aber hätte sein sollen https://192.168.0.101;3000/userProfile
– HardBurn
13. August 2020 um 8:31 Uhr
Ich bin nur hierher gekommen, um zu sagen, dass ich “lokaler Host: 3000” (nachgestellter Schrägstrich) in meiner oauth-Konfiguration und “lokaler Host: 3000” (kein nachgestellter Schrägstrich) in meiner Cognito-Benutzerpool-Callback-URL … als ich beide mit dem nachgestellten Schrägstrich versehen habe, ist dieser Fehler verschwunden.
– Jason L
9. November 2021 um 18:03 Uhr
Für mich war die auf aws definierte Umleitungs-URL nur “myapp://”. Nachdem ich es in “myapp://appname” geändert hatte, funktionierte es. Aber danke für den Entwicklertools-Trick. Es hat mir geholfen, das Problem zu finden, an dem ich seit 3 Tagen feststeckte.
– Sahil Garg
7. Februar um 11:12 Uhr
Alok Verma
Überprüfen Sie Ihre Rückruf-URL und die Abmelde-URL. Das korrekte Format ist:
app_client_name:https://www.myapp.com/
also in deinem Fall die app_client_name wäre alok-besure?
– Alex Kory
28. November 2019 um 5:20 Uhr
Vielen Dank. Angabe einer vollständigen URL in Rückruf-URL und Abmelde-URL hat bei mir funktioniert.
– John McGehee
13. November 2020 um 19:41 Uhr
Erweiterung auf die Antwort von Dimitris https://stackoverflow.com/a/60456018/6883773
Wenn Sie für Ihren Load Balancer eine DNS-route53 angegeben haben. Sie können dasselbe in der Rückruf-URL angeben.
Umleitungs-URI (1. Bild) muss dieselbe sein wie im Feld Rückruf-URL(s) (2. Bild).
1. Bild
2. Bild (App-Integration -> App-Client-Einstellungen unter AWS)
Ein weiterer dummer Fehler, den ich gemacht habe und für den ich Stunden brauchte, um es herauszufinden, war die Tatsache, dass der Wert von redirectSignIn in aws-exports.js war völlig falsch. Wenn Sie den Wert dieser Konfiguration mehrmals über die Amplify-CLI ändern, wird ein Komma angehängt, das den Wert als Liste behandelt und Ihnen so etwas gibt
Leider wird der Wert bei Verwendung von HostedUI als Zeichenfolge behandelt.
Wow, du hast mir so viel Zeit gespart. Vielen Dank!
– Erik Gaasedelen
13. Dezember 2020 um 7:12 Uhr
@Oscar, ich arbeite auch mit Amplify, um SAML-basiertes IDP zu integrieren. Wenn ich jedoch direkt auf die URL zugreife: https://.amazoncognito.com/login?response_type=token&client_id=&redirect_uri=localhost:3000/campaignsList, es funktioniert super. Allerdings muss ich es auch in das Frontend integrieren. Aber ich stehe vor Problemen. Meine aws-export.js hat oauth als:
– Ascher Aleem
4. August 2021 um 12:30 Uhr
“oauth”: { “domain”: ,”Bereich”:[“phone”,”email”,”openid”,”profile”,”aws.cognito.signin.user.admin”],”redirectSignIn”: “localhost:3000/campaignsList“, “redirectSignOut”: “localhost:3000/Anmeldung“, “responseType”: “token”, “client_id”: }, habe ich relaySignIn gleich den CallBackUrls in meinem Cognito-Client und forwardSignOut gleich den Abmelde-URLs gehalten. Auch auf der Anmeldeseite mache ich das : Auth.configure({ awsmobile }); um die Konfigurationen abzurufen und auf der Anmeldeschaltfläche auf Ja zu klicken:
– Ascher Aleem
4. August 2021 um 12:31 Uhr
warte auf Auth.federatedSignIn({customProvider: “IdP”}).
– Ascher Aleem
4. August 2021 um 12:33 Uhr
@AzherAleem Welches Problem haben Sie?
– Oscar Nevarez
4. August 2021 um 17:18 Uhr
Ich verwende Amplify mit Cognito und bin auf diesen Fehler gestoßen. Behoben durch folgendes. In aws-export.ts gibt es eine RedirectSingIn-URL, es muss genau dieselbe URL sein wie in cognito/app Integration/app client setting/callback url, wo die Anwendung ausgeführt wird.
Update: Ich habe dieses Problem erneut in AWS Cognito, Benutzerpool, App-Client, Client-Web festgestellt. Nach dem Aktualisieren der Callback-URL(s) fangen die Dinge an zu brechen, sogar die Callback-URL(s) ist gültig. Später habe ich herausgefunden, dass es einige Zeit dauern wird, bis die Änderung synchronisiert wird. Ich muss ungefähr 10 Minuten weggehen und es dann erneut versuchen.
Wow, du hast mir so viel Zeit gespart. Vielen Dank!
– Erik Gaasedelen
13. Dezember 2020 um 7:12 Uhr
@Oscar, ich arbeite auch mit Amplify, um SAML-basiertes IDP zu integrieren. Wenn ich jedoch direkt auf die URL zugreife: https://.amazoncognito.com/login?response_type=token&client_id=&redirect_uri=localhost:3000/campaignsList, es funktioniert super. Allerdings muss ich es auch in das Frontend integrieren. Aber ich stehe vor Problemen. Meine aws-export.js hat oauth als:
– Ascher Aleem
4. August 2021 um 12:30 Uhr
“oauth”: { “domain”: ,”Bereich”:[“phone”,”email”,”openid”,”profile”,”aws.cognito.signin.user.admin”],”redirectSignIn”: “localhost:3000/campaignsList“, “redirectSignOut”: “localhost:3000/Anmeldung“, “responseType”: “token”, “client_id”: }, habe ich relaySignIn gleich den CallBackUrls in meinem Cognito-Client und forwardSignOut gleich den Abmelde-URLs gehalten. Auch auf der Anmeldeseite mache ich das : Auth.configure({ awsmobile }); um die Konfigurationen abzurufen und auf der Anmeldeschaltfläche auf Ja zu klicken:
– Ascher Aleem
4. August 2021 um 12:31 Uhr
warte auf Auth.federatedSignIn({customProvider: “IdP”}).
– Ascher Aleem
4. August 2021 um 12:33 Uhr
@AzherAleem Welches Problem haben Sie?
– Oscar Nevarez
4. August 2021 um 17:18 Uhr
Ich habe das gelöst, indem ich daran gedacht habe, einzuschließen http:// in der callbackUrl auf dem Frontend.
const redirect_url=`${window.location.origin}`;
Es wird wahrscheinlich kein häufiger Grund sein, aber meiner ist kaputt gegangen.
14316200cookie-checkAmazon Cognito: So verhindern Sie, dass beim Umleiten vom Browser zur Android-App der Fehler „redirect_mismatch“ angezeigt wirdyes
Hast du das jemals gelöst?
– Softino
9. August 2018 um 18:39 Uhr
Ich habe dies zum Laufen gebracht, nachdem ich meine Rückruf-URL(s) festgelegt habe. [you can define more than one which is why you need to specify the redirect_uri] und Definieren meines Anmeldeendpunkts.
Gehen Sie zum Amazon Cognito-Entwicklerhandbuch, wo die Spezifikationen für den Anmeldeendpunkt definiert werden: https://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html
Am Ende der Seite geben sie ein Beispiel. Auf dieser Seite wird beschrieben, welche Parameter erforderlich und welche optional sind.
– Valen
29. August 2019 um 18:23 Uhr