2017-02-15 2 views
0

Für eine Anwendung, die ich entwickle, erfordert es eine Menge Echtzeitverarbeitung, also haben wir beschlossen, mit Nodejs zu gehen und Express zu verwenden, um die Anwendung über etwas wie Laravel zu bauen.Node.js und express - Authentifizieren durch OAuth

Das Problem, das ich habe, ist die Authentifizierung des Benutzers. Seit dem haben wir einen OAuth-Server (Build on Lumen), um Benutzer zu authentifizieren und eine API für die mobile Anwendung bereitzustellen. Diese Anwendung liest und schreibt selbstständig Daten und verwendet die API nicht wirklich.

Ist es daher möglich, den Benutzer über unser OAuth zu authentifizieren (Speichern der zurückgegebenen Schlüssel)? Ich suche nach etwas ähnliches zu loginusingid in Laravel

+0

http://passportjs.org/ unterstützt möglicherweise mit einigen Hintergrund auf, wie Sie authentifizieren können, um die Frage ein wenig zu spezifizieren. –

+0

@R. Gulbrandsen Entschuldigung, verstehe ich nicht "die Frage ein wenig angeben"? Ich bin mir der Passwörter bewusst, aber unterstützt dies die Authentifizierung mit Ihrer eigenen API? – Phorce

+0

Das Bearer-Token des Benutzers ist im Anforderungsobjekt verfügbar und kann vor der Ausführung jeder Anforderung entweder mit einem Pass oder einer benutzerdefinierten Middleware überprüft werden. Kurze Antwort auf Ihre Frage ist "Ja". Wenn Sie sich einen Pass oder eine Dokumentation über Middleware ansehen, wäre es einfacher, Ihnen mit etwas Code zu helfen :) –

Antwort

1

Von Github für OAuth2 mit Passport https://github.com/jaredhanson/passport-oauth2

konfigurieren startegy

passport.use(new OAuth2Strategy({ 
    authorizationURL: 'https://www.example.com/oauth2/authorize', 
    tokenURL: 'https://www.example.com/oauth2/token', 
    clientID: EXAMPLE_CLIENT_ID, 
    clientSecret: EXAMPLE_CLIENT_SECRET, 
    callbackURL: "http://localhost:3000/auth/example/callback" 
    }, 
    function(accessToken, refreshToken, profile, cb) { 
    User.findOrCreate({ exampleId: profile.id }, function (err, user) { 
     return cb(err, user); 
    }); 
    } 
)); 

Jetzt können Sie die Endpunkte authentifizieren entweder auf einem globalen Bereich

express.use(passport.authenticate('oauth2')); 

oder auf einer Route spezifischen Standort

app.get('/auth/example', 
     passport.authenticate('oauth2'), 
     function(req, res) { 
    // Your code here 
}); 
+0

Entschuldigung, aber ich habe nur gedacht - wie kann ich den Benutzernamen/das Passwort mit dieser Bibliothek weitergeben? Der OAuth-Server, den ich benutze, ist über eine API und daher hat er nicht das Autorisierungskram – Phorce

+0

, das zurückgegeben werden soll, wenn die Anwendung den OAuth2-Server anfordert, ein Token zu validieren. –

+0

@R Gulbrandsen - Danke für die Antwort. Wir haben keine Autorisierung/nichts, was zurückgegeben werden kann, daher habe ich Schwierigkeiten zu verstehen, wie sie es mit der API zurückgeben wird ... In früheren Systemen verwenden wir einfach/oauth/token und geben dann username/password ein gibt uns ein Token mit dem Benutzernamen/Passwort ist in Ordnung – Phorce