Wir haben also eine Ionic Angular-App für Android und iOS. Wir verwenden das Paket „angular-oauth2-oidc“ mit unserem Server-Keycloak für die Benutzerauthentifizierung. Wir haben heute festgestellt, dass die Anmeldung bei der Android-Version unserer App nicht funktioniert (wir wissen nicht, wie lange dies nicht funktioniert). Wir haben beide Plattformen getestet (Code genau gleich) und iOS funktioniert gut, aber Android schlägt mit Token fehl.
Benutzer klickt auf Schaltfläche für Google- oder Facebook-Anmeldung
App wird im App-Browser von @capacitor/browser mit Keycloak-Website geöffnet
Benutzer können wählen, ob sie sich mit Google, Facebook anmelden oder einfach Benutzernamen und Passwort eingeben möchten
Nach seiner Auswahl Schlüsselumhang Leitet zur App weiter
Wenn die Token-Methode hasValidToken() „true“ zurückgibt, leitet der App-Flow den Benutzer zu anderen App-Bildschirmen um
Was ist das Problem unter Android, funktioniert aber unter iOS einwandfrei?
Die oben genannten Schritte 1, 2, 3, 4 funktionieren Gut
Wenn die App nach der Umleitung wieder verfügbar ist, dann die hasValidToken() gibt immer false zurück
Benutzer wird nicht zu anderen App-Bildschirmen weitergeleitet (Bildschirme für authentifizierte Benutzer)
Wenn der Benutzer erneut auf Google oder Facebook klickt Anmeldeschaltflächen, dann wird der Ablauf ohne Schritt 3 wiederholt, da Keycloak weiß, dass dieser Benutzer bereits angemeldet ist, sodass eine Umleitung zur App erfolgt.
Nach der Umleitung wird die App manchmal minimiert (nicht immer und es gibt keine Native oder JS-Fehler sichtbar in Logcat- und Dev-Tools-Konsole)
Alles sollte gut funktionieren, so wie es für iOS funktioniert. Es funktionierte einwandfrei, bevor wir es bemerkten, und in diesem Teil der App wurden seit etwa 2 Jahren keine Codeänderungen vorgenommen
Betriebssystem: Android
Browser: Ionic App (@capacitor/browser wird zum Öffnen von Keycloak aus OAuth-Methoden verwendet)
Version [z.B. 22]: „angular-oauth2-oidc“: „^15.0.1“
Plugin-Init wird in der App erstellt .module.ts wie folgt:
Und außerdem haben wir die Methode authOnAppInit, die bei App-Init in app.component.ts ausgelöst wird, um zu überprüfen, ob der Benutzer bereits angemeldet ist. Die hier bereitgestellten Konsolenprotokolle dienen lediglich der Fehlerbehebung dieses Problems
Wir haben es ein paar Stunden lang debuggt und wie ich oben geschrieben habe, da Gibt es in keiner dieser Plugin-Methoden Fehler oder sogar native Fehler von Android Logcat
Irgendwelche Ideen?
Wir haben also eine Ionic Angular-App für Android und iOS. Wir verwenden das Paket „angular-oauth2-oidc“ mit unserem Server-Keycloak für die Benutzerauthentifizierung. Wir haben heute festgestellt, dass die Anmeldung bei der Android-Version unserer App nicht funktioniert (wir wissen nicht, wie lange dies nicht funktioniert). Wir haben beide Plattformen getestet (Code genau gleich) und iOS funktioniert gut, aber Android schlägt mit Token fehl. [list] [*]Benutzer klickt auf Schaltfläche für Google- oder Facebook-Anmeldung App wird im App-Browser von @capacitor/browser mit Keycloak-Website geöffnet [*]Benutzer können wählen, ob sie sich mit Google, Facebook anmelden oder einfach Benutzernamen und Passwort eingeben möchten Nach seiner Auswahl Schlüsselumhang Leitet zur App weiter [*]Wenn die Token-Methode hasValidToken() „true“ zurückgibt, leitet der App-Flow den Benutzer zu anderen App-Bildschirmen um [/list] [b]Was ist das Problem unter Android, funktioniert aber unter iOS einwandfrei?[/b] [list] [*]Die oben genannten Schritte 1, 2, 3, 4 funktionieren Gut [*]Wenn die App nach der Umleitung wieder verfügbar ist, dann die hasValidToken() gibt immer false zurück [*]Benutzer wird nicht zu anderen App-Bildschirmen weitergeleitet (Bildschirme für authentifizierte Benutzer) [*]Wenn der Benutzer erneut auf Google oder Facebook klickt Anmeldeschaltflächen, dann wird der Ablauf ohne Schritt 3 wiederholt, da Keycloak weiß, dass dieser Benutzer bereits angemeldet ist, sodass eine Umleitung zur App erfolgt. [*]Nach der Umleitung wird die App manchmal minimiert (nicht immer und es gibt keine Native oder JS-Fehler sichtbar in Logcat- und Dev-Tools-Konsole) [/list] Alles sollte gut funktionieren, so wie es für iOS funktioniert. Es funktionierte einwandfrei, bevor wir es bemerkten, und in diesem Teil der App wurden seit etwa 2 Jahren keine Codeänderungen vorgenommen [list] [*]Betriebssystem: Android [*]Browser: Ionic App (@capacitor/browser wird zum Öffnen von Keycloak aus OAuth-Methoden verwendet) [*]Version [z.B. 22]: „angular-oauth2-oidc“: „^15.0.1“ [/list] [list] [*]Plugin-Init wird in der App erstellt .module.ts wie folgt: [/list] [code]const authConfig: AuthConfig = { issuer: 'issuer url here', requireHttps: true, redirectUri: 'our redirect uri', clientId: 'our client id', responseType: 'code', revocationEndpoint: 'revoke endpoint', showDebugInformation: true, useSilentRefresh: true, openUri: (uri) => { Browser.open({ url: uri }); }, };
...other providers in module { provide: APP_INITIALIZER, useFactory: initializeAuth, multi: true, deps: [OAuthService, AuthService, StorageService] }, ...other providers in module [/code] Config ist in Ordnung, storageService.init() funktioniert auch gut und es gibt hier keine Fehler [list] [*] Die Methode addAppUrlOpenListener sieht folgendermaßen aus [/list] [code] addAppUrlOpenListener = (): void => { App.addListener('appUrlOpen', async (event) => { const url = new URL(event.url); this.loggerService.sendLog('App URL opened', { url: event.url });
}); }); }; [/code] [list] [*]Und außerdem haben wir die Methode authOnAppInit, die bei App-Init in app.component.ts ausgelöst wird, um zu überprüfen, ob der Benutzer bereits angemeldet ist. Die hier bereitgestellten Konsolenprotokolle dienen lediglich der Fehlerbehebung dieses Problems [/list] [code] authOnAppInit = (): void => { this.oauthService .loadDiscoveryDocumentAndTryLogin({ onTokenReceived: (info) => { console.log('Token received callback:', info); }, onLoginError: (error) => { console.error('Login error:', error); }, }) .then((result) => { this.hasValidAccessToken = this.oauthService.hasValidAccessToken(); const accessToken = this.oauthService.getAccessToken(); const accessTokenExpiration = this.oauthService.getAccessTokenExpiration();
this.loggerService.sendLog('OAuth event', { event }); this.hasValidAccessToken = this.oauthService.hasValidAccessToken(); if (this.hasValidAccessToken) { this.handleAfterLoginActions(); } }); }; [/code] [b]Also noch einmal – für Android oben sind die Konsolenprotokolle:[/b] [list] [*]Versuchen Sie es mit der Anmeldung Ergebnis – wahr (soweit ich weiß, bedeutet dies, dass die Anmeldung erfolgreich war) [*]Zugriffstoken – null [*]Ablauf des Zugriffstokens – null Hat gültiges Zugriffstoken – falsch [*]OAuth-Ereignis empfangen – OAuthSuccessEvent {type: 'discovery_document_loaded', info: {...}} [/list] Wir haben es ein paar Stunden lang debuggt und wie ich oben geschrieben habe, da Gibt es in keiner dieser Plugin-Methoden Fehler oder sogar native Fehler von Android Logcat Irgendwelche Ideen?
Ich versuche den Namen des Zwischenablettungsformates zu erhalten. Hier ist, was ich (unter vielen Variationen) ausprobiert habe:
#pragma comment (lib, User32.lib )
Basierend auf den Spring -Tipps YouTube Video Spring Tipps: Der Frühlingsautorisierungsserver, den ich das Setup aus didaktischen Gründen vereinfachen möchte. Vor dem Unterrichten von...
Ich habe eine Blazor WebAssembly-Anwendung für .NET 8. Ich verwende die OIDC-Authentifizierung und habe die Integration mit Keycloak erfolgreich durchgeführt. Meine aktuelle Konfiguration sieht so...
Ich habe eine schnelle iOS-App mit zwei statischen Bibliotheken – lib1 und lib2 (sagen wir). Lib2 ist von Lib1 abhängig (d. h. es importiert Lib1, um seine Typen zu verwenden). Lib1 und Lib2 werden...
Ich arbeite an einem großen KMM-Projekt und habe folgendes Problem:
Beim Erstellen der iOS-App mit Xcode (versucht 16.0, 16.1, 16.2) in der Release-Konfiguration schlägt der Build fehl: clang: error:...