Web应用程序认证策略

时间:2013-07-24 11:01:45

标签: node.js authentication express oauth-2.0 passport.js

我正在寻找一些针对我的网络应用进行身份验证的建议。我正在使用Node,Express和Passport来构建这个应用程序

该应用程序具有使用Basic Auth的REST API(无会话创建),并使用表单Auth(具有会话创建)托管多个Angular.js网页。

我希望Angular页面连接到REST API,它使用不同的Auth策略。看来我有两个选择:

  1. 创建自定义Basic Auth中间件,(因为Passport不会开箱即用)。如果请求有一个,则会执行会话Auth,否则为标准Basic Auth

  2. 使用Basic Auth(供外部使用)和使用表单Auth(适用于应用程序页面)展示两个API

  3. 如果还听说使用OAuth2可能是一种选择,但肯定只对第三方进行身份验证有意义吗?

1 个答案:

答案 0 :(得分:1)

我目前的解决方案是在其余的api上执行混合身份验证(会话和基本)。如果会话存在,则执行基本身份验证。如下:

api.coffee:

app.api.external.get("/agents", [auth.basic], (req, res) ->
    res.json myListOfAgents

auth_middleware.coffee

basic: (req, res, next) ->
    if req.isAuthenticated()
        return next()
    else
        return passport.authenticate('basic', { session: false })(req, res, next)