Was OpenID Connect-Berechtigung flow zum authentifizieren von mobilen app-Benutzer?
Baue ich ein cross-Plattform-mobile-app für die Interaktion mit einer RESTful-API, und ich will OpenID Connect zu authentifizieren meinem Benutzer. Ich Baue meine eigene OpenID Connect server des Anbieters.
OpenID.net Ansprüche, dass:
OpenID Connect ermöglicht für Kunden aller Art, einschließlich browser-basierte JavaScript und native mobile apps, um starten Sie sign-in fließt und erhalten nachprüfbare Behauptungen über die Identität der angemeldeten Nutzer.
Aber ich finde keine Dokumentation welche erklären, wie eigentlich authentifizieren, für eine mobile app client.
Diese StackExchange Antwort macht deutlich, dass OpenID Connect unterstützt nicht die "resource owner password-based grant" flow oder die "client-Berechtigungen" fließen.
Bleibt also nur noch die "authorization code" Fluss (normalerweise von server-side-Anwendungen) und die "implizite Vergabe" fließen (die in der Regel von client-side apps). Diese beiden scheinen sich darauf zu verlassen, das umleiten der Benutzer auf den Anbieter-Zulassung Endpunkt, und mit dem provider-redirect an den client zurück URL. Ich sehe nicht, wie Sie dieses anwenden können, um eine mobile app.
Kann jemand mir erklären (oder noch besser, zeigen Sie mich an einem tutorial oder Beispiel-code), die erklärt, wie dies zu tun?
Update
Klären: OpenID Connect basiert auf dem client umleiten der Benutzer die Autorisierungs-Endpunkt, und dann der Anbieter umleiten der Benutzer wieder an den client. In dem Fall, wo der client ist nicht eine web-app, wie kann das funktionieren?
- Wenn OpenID Connect ist nur eine OAuth 2.0 Verlängerung, ich denke, dass die resource-owner-Anmeldeinformationen gewähren können dennoch umgesetzt werden durch den authorization server als Teil des OAuth-2.0-Spezifikationen ? sobald die mobile app hat ein access-token, ich sehe nichts in der OIDC Spezifikationen, die verbieten würde die app den Zugriff auf das Benutzer-info über die UserInfo Endpunkt.
- siehe stackoverflow.com/questions/24047047/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mobile apps, zumindest auf iOS und Android, kann sich benutzerdefinierte URL-Schema, so dass eine Umleitung von einem browser senden kann der Benutzer zurück zu Ihrer app zusammen mit einigen Abfrage-Parameter.
So, Sie können diese fließt in eine native mobile app, aber es bezieht sich auf das senden der Benutzer zu einem web-browser (entweder ein externes browser-app oder eine web-Ansicht Ihre Anwendung integriert), um für Sie zu authentifizieren, mit der OP.
Jedoch, meine Gedanken zu diesem ganzen Ansatz sind, dass, da Sie der Entwicklung Ihrer eigenen OP-Servers und Ihre eigene native mobile app, die mobile app ist wirklich eine Vertrauenswürdige client und es ist nichts falsch mit, dass Nutzer direkt geben Sie Ihren Benutzernamen und Ihr Passwort in Ihrer app. Ich kann vielleicht noch nachvollziehen, warum dies nicht unterstützt wird durch das OpenID-Connect-spec, weil es nicht wirklich das problem, dass OIDC versucht zu lösen, und es dazu bringen könnte, Drittanbieter-apps zu verlangen, Benutzer zur Eingabe Ihrer Benutzername+Passwort direkt. Aber ich wünschte, es gäbe mehr Informationen zu diesem Thema in der Skillung, wie ich stehe vor einem ähnlichen Szenario zu dir und bin nicht sicher, wie es weitergehen soll.
Ich denke, dass die Hybrid-flow - von der OpenID Connect-Skillung ist wahrscheinlich die, die Sie verwenden möchten. OpenID Connect-Core-Spec.
Diese nicht verlassen sich auf eine konfigurierte return URI, aber als James sagt, dass Sie verwenden würden, ein benutzerdefiniertes URI-Schema zu ermöglichen, das mobile OS zur Weiterleitung nach dem login zu Ihrer eigenen app. Ihre Anwendung würde dann ein access-code, die Sie verwenden können, um Zugriff zu erhalten Token benötigt (vorausgesetzt, Sie verwenden Oauth2 zu schützen Ihr back-end-API-services, welche die mobile-app verwendet).
Gibt es eine Sicherheitslücke, die es erlauben würde, eine bösartige app, um die Kontrolle über Ihren URI-Schema und schnappen Sie sich die Münzen, Es ist ein Entwurf spec zu überwinden, die Beweis Schlüssel für die Code-Exchange OAuth-Öffentliche AUFTRAGGEBER, das ist eine überlegung Wert, die Umsetzung.
refresh_token
) oder Implizite Flow (für single-page-application-apps, die nicht vertrauenswürdig sind, zu speichern, sicheren Zustand zwischen den Sitzungen).Check-out MITREid Projekt auf github: