【问题标题】:Authentication mechanisms for a AngularJS/NodeJS/RESTEasy+JBoss/LDAP stackAngularJS/NodeJS/RESTEasy+JBoss/LDAP 堆栈的身份验证机制
【发布时间】:2013-08-06 16:51:02
【问题描述】:

我正在寻找一些关于这样设置的应用程序堆栈的身份验证/安全机制或最佳实践:

  • AngularJS 前端
  • NodeJS 网络服务器
  • 在 JBoss AS 7 上运行的 RESTEasy 后端
  • LDAP 身份验证

如果可能的话,我希望 Angular 提供登录对话框,这样它就很漂亮,而不是标准的浏览器 HTTP 身份验证对话框,但这更像是一种偏好而不是要求。我对它的工作原理有很好的感觉(基于angular-app)。

我已经设置了 RESTEasy 服务,要求在 JBoss 上进行 LDAP 身份验证,这样用户就不能在没有身份验证的情况下简单地访问 REST 端点;我在这部分使用了 EE6 领域/角色,但我愿意接受最有效的方法。

我有点卡住的是中间层。有没有办法使用相同的凭据向 JBoss(提供数据)和 NodeJS(以便应用知道用户是谁)进行身份验证?

我想答案取决于应用程序是否使用 CORS,我觉得那里有意义。

编辑:OAuth 或其他第三方身份验证类型没有吸引力,因为这纯粹是一个内部应用程序。

谢谢!

【问题讨论】:

  • 如果您已经有 REST 后端,我可以知道 Node 的位置吗?谁与 LDAP 服务器通信?
  • Node (with express) 只是为 AngularJS 站点提供服务。
  • 现在 JBoss 正在使用 LDAP 以保护 REST API; Node 可能需要也可能不需要使用 LDAP 来保护 UI(我想这是我的问题的一部分)。

标签: javascript node.js rest angularjs jboss


【解决方案1】:

这里有点无法回答,但我将描述我是如何解决我的问题的:我将 Node 完全从堆栈中取出。 API 和 Web 应用程序现在都由 JBoss 直接托管。 JBoss 完成的 HTTP Basic/LDAP 身份验证负责我的身份验证。因为它们在同一台机器、协议等上,所以不需要 CORS,所以我也回避了这个问题。

【讨论】:

    【解决方案2】:

    如果您决定使用 HTTP Basic/Digest 身份验证,您可以使用 http-auth 模块。

    // Authentication module.
    var auth = require('http-auth');
    var basic = auth.basic({
        realm: "Simon Area.",
        file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ...
    });
    
    // Creating new HTTP server.
    http.createServer(basic, function(req, res) {
        res.end("Welcome to private area - " + req.user + "!");
    }).listen(1337);
    

    【讨论】:

      【解决方案3】:

      我想你可以为 JBoss 中的给定部分生成一个身份验证令牌,该令牌是:

      • 放入节点服务器可访问的数据存储区(可以是 MongoDB、CouchDB 等)
      • 存储在客户端的cookie中到节点服务器

      节点服务器然后可以使用令牌交叉验证客户端是否已正确验证并保护页面(登录页面除外)。

      【讨论】:

      • 那肯定行得通。在这种情况下,我想坚持使用 HTTP 基本身份验证(无令牌),所以这不是我采用的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 2017-06-03
      • 2011-09-23
      相关资源
      最近更新 更多