Authentifizierung mit React Native und API-backend
Ich versuche, wickeln Sie meinen Kopf herum, oauth mit einem Reagieren Nativen app und einer separaten NodeJS - /Express-API-backend. Ich verstehe https://github.com/adamjmcgrath/react-native-simple-auth bietet die Authentifizierung für ein Reagieren Nativen app und http://passportjs.org/ bietet Authentifizierung für eine NodeJS-backend. Ich bin mir nicht sicher, wie verbinden Sie diese beiden für die Authentifizierung für login und Zugriff auf die API.
Ich würde gerne die Benutzer-login auf das Reagieren Nativen app entweder per E-Mail und Passwort oder über Facebook/Twitter/Google. Einmal eingeloggt in der app, was muss ich senden, um die API um sicherzustellen, dass Sie authentifiziert sind und haben Zugriff auf eine bestimmte route?
Hier ist ein Beispiel-flow, um sich anzumelden und sehen Sie den angemeldeten Benutzer Einstellungen:
- Benutzer sich anmeldet Reagieren Nativen app per E-Mail/Passwort oder Facebook - /Twitter - /Google.
- Benutzer authentifiziert ist
- App macht die Anfrage GET /api/settings
- API überprüft, der Benutzer wird authentifiziert und gibt, die Benutzereinstellungen oder die API überprüft, der Benutzer wird nicht authentifiziert und gibt einen 403.
- Dieses Beispiel mag helfen. Es zeigt die Verwendung von Express/Passport.js mit React Native zu führen auth-Operationen. >react native-login ist ein Beispiel Reagieren Nativen Projekt zeigt, wie mithilfe einer WebView und reagieren-native-cookies, um login zu Ihren bestehenden backend. >Link: github.com/ryanmcdermott/react-native-login
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine ganze Menge zu dieser Frage, so sehr, dass es nicht alle passen in einen einzigen SO zu beantworten, aber hier einige Tipps und eine Allgemeine übersicht, das sollte grob passen, was Sie erreichen möchten.
OAuth2 Genehmigung
Von den Klängen der es, Sie sind daran interessiert, die Verwendung von OAuth 2 zu social-login Genehmigung, und möchte muss bei der ersten party Authentifizierung als alternative mit einer E-Mail und Passwort. Für social log-ins werden Sie am Ende mit dem OAuth 2 Implizite flow zum abrufen eines Zugriffstokens, das ist ein allgemein anerkannter Muster. Denn Sie sind auch der Suche nach authentifizieren Benutzer mit einer E-Mail und Passwort, können Sie möchten machen Sie sich mit OpenID Connect ist eine Erweiterung von OAuth 2 und die explizit unterstützt Authentifizierung zusätzlich zur Genehmigung.
In jedem Fall, sobald Ihr Benutzer verfasst eine E-Mail/Passwort Kombo oder die Berechtigung erteilt, die durch die social-identity-Provider, erhalten Sie in der Antwort ein access token und (Optional) ein ID-token. Die Token, wahrscheinlich ein JWT (JSON Web Token, siehe jwt.io) stoßen wird als base64-codierte Zeichenfolge, die Sie entschlüsseln können, um zu überprüfen die Ergebnisse der JWT, die Dinge wie die ID des Benutzers und andere details wie E-Mail-Adresse, name, etc.
Für weitere Informationen über die verschiedenen Arten von Bewegungen, siehe dieser hervorragende überblick über den Digitalen Ozean.
Verwenden von Token für die API-Authentifizierung
Nun, dass Sie ein access-token, die Sie übergeben können, zusammen mit allen Anfragen an das API zu demonstrieren, dass Sie sich richtig authentifiziert. Sie tun dies, indem man entlang der access-token in Ihren HTTP-Headern, insbesondere die
Authorization
header, Vorwort zu Ihrem base64-codierte access token (was Sie ursprünglich erhalten als Antwort auf Ihre Berechtigung Anfrage) mitBearer
. Also der header sieht ungefähr so aus:Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh...
Auf die API-Seite, erhalten Sie das token entschlüsseln, und dann überprüfen die ID und die Ansprüche in es. Übergeben als Teil des token in die
sub
Eigenschaft der Thema, oder die ID des Benutzers, der die Anfrage. Dies ist, wie Sie zu identifizieren, zugreifen auf und starten, Dinge zu tun, auf die API-Seite bei dem jeweiligen user die Rechte, Dauerwellen, etc. Es ist auch wichtig, dass Sie überprüfen der access-token, sobald Sie es erhalten, auf die API-Seite, um sicherzustellen, dass es nicht gefälscht oder von hand gefertigt.Wie sieht es in der RN für Implizite fließt
Hier ist, was der Allgemeine Ablauf sieht aus wie in Reagieren Nativen für OAuth 2 Implizite fließt, das ist, was Sie verwenden werden für die social-identity-Provider:
Linking
API in RN, Sie werden sich öffnen, die URL in einem browser auf dem Gerät, das sendet der Benutzer aus, um die sozialen Anbieter für Sie zu tun die login/Autorisierung Tanz.my-awesome-app://
, und die Weiterleitungs-URL, die Sie übergeben, um die sozialen Anbieter Aussehen könntemy-awesome-app://auth_complete/
. Sehen die Verknüpfung von API-docs, wie konfigurieren Sie diese URL-Schemata und deep linking.Wie sieht es in der RN für Resource Owner Password Zuschüssen
Haben Sie die Möglichkeit, für Ihre E-Mail - /Passwort-Kombination für Ihre eigenen Konten entweder kleben mit dem Implicit flow, oder Wechsel zu den Resource Owner Password Gewähren flow wenn deine API-und app-Vertrauen zueinander, was bedeutet, dass Sie sowohl die app und die API. Ich bevorzuge die ROPG flow auf mobile apps-wo möglich, weil die UX ist doch viel schöner-Sie müssen nicht zu öffnen, eine separate web-Ansicht, die Sie gerade haben, Sie geben Sie in Ihrer E-Mail und Passwort in die UI-Elemente direkt in der app. So, dass gesagt wird, hier ist, wie es aussieht:
Wie Sie sehen können, die ROPG ist mehr einfach, aber sollte nur verwendet werden, in sehr vertrauenswürdigen Szenarien.
An der API
Auf der API-Seite, die Sie überprüfen, ob das token in der Authorization-header, und wie bereits erwähnt, und wenn gefunden, Sie davon ausgehen, dass der Nutzer authentifiziert wurde. Es ist immer noch eine gute Sicherheit der Praxis zu gültig und überprüfen Sie die token-und user-Berechtigungen. Wenn es kein token gesendet, mit der Anfrage, oder wenn das token gesendet hat, die abgelaufen ist, dann wird Sie den Antrag ablehnen.
Hoffe, das hilft! Es ist sicherlich eine Tonne, aber es bietet einen Allgemeinen überblick.