OpenID Connect für mobile Apps
OIDC kann in einem Browser-basierten Flow verwendet werden oder in einem App2App Szenario durch Integration der ID Austria Anmeldung in eine native App. Die Verwendung ist bei beiden Varianten grundsätzlich ähnlich. Allgemeine Informationen zur Verwendung von OIDC und die Anbindung an das ID Austria System sind unter Anbindung via OpenID Connect zusammengefasst. Im Falle von mobilen Applikationen oder bei Verwendung auf mobilen Geräten im Allgemeinen ergeben sich jedoch spezifische Eigenheiten, welche die Benutzerführung beeinflussen und häufig zu Schwierigkeiten in der Interaktion mit dem ID Austria System führen. Nachfolgend finden Sie Informationen zu häufig auftretenden Fragen und spezifische Informationen zur Interaktion mit der App "ID Austria".
App Domain Associations für OIDC Rücksprungadresse
Wird OIDC in eine native App integriert, kann als Rücksprungadresse (redirect_uri) ebenfalls ein URL Scheme angegeben werden, sodass nach der Anmeldung ein unmittelbarer Rücksprung in die App erfolgt. Es sind jedoch ausschließlich http(s) URLs zulässig.
Diese Rücksprungadresse muss durch die native App registriert und mittels Apple/Android spezifischen Domain Associations bestätigt werden. Bei fehlender Registrierung der Rücksprungadresse in der App sowie bei einer fehlenden oder fehlerhaften Domain Association verhindert das mobile Betriebssystem das Öffnen der nativen App nach erfolgreicher Anmeldung am ID Austria System. Nachfolgend noch Details zur Domain Association und der Registrierung der Rücksprungadresse als „Universal Link“ oder „App Link“ bei iOS und Android.
- Android
- iOS
Beim Einsatz von OIDC in nativen Apps empfiehlt RFC8252 die Verwendung des Code Authorization Flows. Da das ID Austria System jedoch die Verwendung von Client-Secrets verpflichtend vorsieht, ist eine Verwendung von PKCE (RFC7636) nicht zwingend erforderlich. Eine Verwendung von PKCE (RFC7636) in nativen Apps wird jedoch durch den IdP technisch unterstützt.
Erkennung ob App "ID Austria" verfügbar
Hinsichtlich einer optimierten Benutzer:innenführung in der nativen App ist vor dem Start einer OIDC Anmeldung die Prüfung sinnvoll, ob die App "ID Austria" am mobilen Gerät zur Verfügung steht. Hierfür bietet die App "ID Austria" die folgenden Custom URL-Schemata zur Prüfung via „App-Link“ oder „Universal Link“.
- App "ID Austria" (P- und T-System):
- Custom URL-Schema: at.gv.id-austria://
- Android Package Name: at.gv.oe.app
- App "ID Austria" (QS- Build):
- Custom URL-Schema: at.gv.id-austria.q://
- Android Package Name: at.gv.oe.app.q
Erkennung der App "ID Austria" unter Android
1.) Berechtigung des Android Package Name für die App "ID Austria" im Abschnitt < queries> des App Manifest.
< package android:name="at.gv.oe.app" />
< /queries>
2.) Abfrage mittels Android Package Name der App "ID Austria", ob diese verfügbar ist.
try {
requireActivity().getPackageManager().getPackageInfo(packageName, 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
Ein vollständiges Beispiel einer nativen Android App mit Detektion der App " ID Austria" ist auf GitHub verfügbar.
Erkennung der App "ID Austria" unter iOS
1.) Berechtigung des Custom URL-Schema für die App "ID Austria" über die Bundle Configuration der nativen App im Element LSApplicationQueriesSchema.
< array>
< string>at.gv.id-austria< /string>
< /array>
2.) Abfrage mittels Custom URL-Schema der App "ID Austria", ob diese verfügbar ist.
let uri = URL(string: daAppUrl)
return UIApplication.shared.canOpenURL(uri)
}
Fehlercodes der App "ID Austria"
Im Folgenden werden Fehlercodes beschrieben, die bei einer OIDC-Authentifizierungsanfrage von einer externen App an die aufrufende App mit URL-Abfrageparametern zurückgeworfen werden können. Basierend auf den OpenID Connect Konventionen in dieser Form:
- state mit dem gleichen Wert wie in der Anfrage
- error ist immer invalid_request
- error_description enthält ein Format %s (%s): %s mit den folgenden Werten in der Reihenfolge:
- Der Name der Top-Level-Ausnahme
- Der Name der detaillierten Ausnahme
- Die Nachricht der Top-Level-Ausnahme.
UserCancel: Sie haben diese Anmeldung mit ID Austria abgebrochen.
Fehlercode |
Fehlertext |
Ursache |
---|---|---|
UserCancel |
Sie haben diese Anmeldung mit ID Austria abgebrochen. |
Die Nutzerin oder der Nutzer hat die Anmeldung beim Service Provider mit der App „ID Austria“ abgebrochen. |
UserNotLoggedIn |
Die App „ID Austria“ ist derzeit nicht verknüpft. Bitte wechseln Sie zurück in die App und verknüpfen Sie diese mit Ihrer ID Austria. |
Die App „ID Austria“ ist derzeit nicht bzw. nicht vollständig verknüpft. |
UserLoggedOut |
Sie wurden aus Sicherheitsgründen aus der App „ID Austria“ abgemeldet. Dies kann z.B. durch eine Änderung der Entsperrmethoden verursacht worden sein. Bitte wechseln Sie zurück in die App und verknüpfen Sie diese erneut mit Ihrer ID Austria. |
Die Nutzerin oder der Nutzer wurde aus Sicherheitsgründen aus der App „ID Austria“ abgemeldet. Dies kann z.B. durch eine Änderung der Entsperrmethoden verursacht worden sein. |
UserLockedOut |
Diese Anmeldung mit ID Austria wurde aus Sicherheitsgründen abgebrochen. Dies kann z.B. durch zu viele Fehlversuche bei der Authentifizierung verursacht worden sein. In diesem Fall sperren Sie das Gerät und entsperren Sie es mit Ihrem Gerätepasswort. Bitte versuchen Sie diese Anmeldung erneut. |
Die Anmeldung mit der App „ID Austria“ wurde aus Sicherheitsgründen abgebrochen. Dies kann z.B. durch zu viele Fehlversuche bei der Authentifizierung verursacht worden sein. |
SystemInMaintenance |
Das ID Austria System kann derzeit aufgrund von Wartungsarbeiten nicht genutzt werden. Bitte versuchen Sie diese Anmeldung später erneut. |
Das ID Austria System kann derzeit aufgrund von Wartungsarbeiten nicht genutzt werden. |
SystemNotReachable |
Das ID Austria System ist derzeit nicht erreichbar. Stellen Sie sicher, dass Ihr Gerät mit dem Internet verbunden ist und versuchen Sie diese Anmeldung erneut. |
Das ID Austria System ist derzeit nicht erreichbar, es sind jedoch keine Wartungsarbeiten gemeldet. Unter Umständen hat das Gerät der Nutzerin oder des Nutzers keine Verbindung zum Internet. |
UnexpectedError |
Es ist ein unerwarteter Fehler aufgetreten. Bitte versuchen Sie diese Anmeldung mit ID Austria erneut. |
Es ist ein unerwarteter Fehler aufgetreten. |
EULoginNotSupported |
Eine Anmeldung mit einer eID eines anderen EU-Mitgliedsstaates wird von diesem Service nicht unterstützt. |
Die App „ID Austria“ ist derzeit mit einer eID eines anderen EU-Mitgliedsstaates verknüpft, der Service Provider unterstützt jedoch keine Anmeldung mit EU-Login. |
Integration eines Demo-Login Möglichkeit für App-Review
In manchen Fällen (z. B. für eine App-Review) kann es erforderlich sein, einen OIDC Login via ID Austria ohne installierte App "ID Austria" zu ermöglichen. Vor allem für App-Review und Demonstrationszwecke bietet sich die Verwendung des ID Austria Testsystems und der hierfür definierten Testidentitäten an. Für die Integration von Browser basierten Anmeldeprozessen stehen spezifische Authentication Flows zur Verfügung, welche eine Übergabe des Anmeldeprozesses an das ID Austria System und einen sicheren Rücksprung in die native App ermöglichen. In diesem Fall erfolgt die Anmeldung am ID Austria System identisch zur Anmeldung im Web-Browser im Allgemeinen.
Integration Demo Login für Android
Die Integration eines Web-Browser basierten Anmeldeprozesses in die native Android App kann mittels Browser Custom Tab erfolgen. Nachfolgend ein kurzes Beispiel welches die Verfügbarkeit der App "ID Austria" prüft und einen Anmeldevorgang via Custom Tab startet falls diese nicht verfügbar ist.
boolean isEidAppInstalled = isPackageInstalled("at.gv.oe.app");
if (isEidAppInstalled) {
startActivity(new Intent(Intent.ACTION_VIEW, url));
} else {
CustomTabsIntent intent = new CustomTabsIntent.Builder().build();
intent.launchUrl(requireContext(), url);
}
}
Ein vollständiges Beispiel einer nativen Android App mit Custom Tab Support für die Anmeldung am ID Austria System ist auf GitHub verfügbar.