2017-02-15 51 views
0

对于我正在开发的应用程序,它需要大量实时处理,因此我们决定使用Nodejs并使用Express来构建应用程序,比如Laravel。Node.js和express - 通过OAuth进行身份验证

我遇到的问题是验证用户。因为我们有一个OAuth服务器(基于Lumen)来验证用户并为移动应用程序提供一个API。这个应用程序将自己读取/写入数据,并且不会真正使用API​​。

因此可以通过我们的OAuth验证用户(存储返回的密钥)吗?我在寻找类似loginusingid东西Laravel

+0

http://passportjs.org/可能会支持一些背景,你可以如何进行身份验证来指定一个小问题.. –

+0

@R。古尔布兰森道歉,我不理解“稍微指定一个问题”?我知道'passportjs'但是这是否支持使用您自己的API进行身份验证? – Phorce

+0

用户的不记名令牌将在请求对象中可用,并且可以在每个请求执行前使用护照或自定义中间件进行验证。对你的问题的简短回答是'是'。如果你看护照或有关中间件的文档,它会更容易帮助你一些代码:) –

回答

1

从GitHub的OAuth2和护照https://github.com/jaredhanson/passport-oauth2

配置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); 
    }); 
    } 
)); 

现在你可以验证端点无论是在全球范围内

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

或在路线特定位置

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

对不起,但我只是想 - 我将如何能够使用这个库来传递用户名/密码?我使用的oauth服务器是通过一个API,因此它没有授权的东西 – Phorce

+0

它应该在应用程序要求oauth2服务器验证令牌时返回。 –

+0

@ R Gulbrandsen - 感谢您的回复。我们没有/ oauth/authorize /要返回任何东西,所以我很难理解它将如何使用API​​返回它......在之前的系统中,我们只是使用/ oauth/token传入用户名/密码,然后如果您的快速应用程序将令牌发送到oauth服务器并且它是有效的令牌,则oauth应返回用户信息,则向我们提供用户名/密码正确的标记 – Phorce

相关问题