【问题标题】:Web application authentication strategiesWeb应用认证策略
【发布时间】:2013-07-24 11:01:44
【问题描述】:

我正在为我的网络应用寻找一些关于身份验证的建议。我正在使用 Node、Express 和 Passport 来构建这个应用程序

该应用有一个使用基本身份验证(不创建会话)的 REST API,并使用表单身份验证(创建会话)托管多个 Angular.js 网页。

我希望 Angular 页面连接到使用不同身份验证策略的 REST API。看来我有两个选择:

  1. 创建一个自定义的 Basic Auth 中间件(因为 Passport 没有开箱即用)。如果请求有一个,这将执行会话身份验证,否则为标准基本身份验证

  2. 公开两个 API,一个具有基本身份验证(供外部使用),一个具有表单身份验证(用于应用页面)

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

【问题讨论】:

  • 两种身份验证策略是否旨在从相同的端点访问相同的内容?

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


【解决方案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)

【讨论】:

  • 在坚持了1个多小时后,最后一行让我很开心!
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 2016-10-12
  • 2015-11-12
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多