AngularJS/NodeJS/RESTEasy+JBoss/LDAP堆栈的身份验证机制

Authentication mechanisms for a AngularJS/NodeJS/RESTEasy+JBoss/LDAP stack

本文关键字:身份验证 机制 堆栈 LDAP NodeJS RESTEasy+JBoss AngularJS      更新时间:2023-09-26

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

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

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

我已经设置了RESTEasy服务,要求在JBoss上进行LDAP身份验证,这样用户就不能在没有身份验证的情况下简单地访问REST端点;我在这个角色中使用了EE6领域/角色,但我对任何最有效的角色都持开放态度。

我有点卡住的地方是中间层。有没有一种方法可以使用相同的凭据来向JBoss(提供数据)和NodeJS(这样应用程序就知道用户是谁)进行身份验证?

我想答案取决于应用程序是否使用CORS,我对任何有意义的东西都很满意。

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

谢谢!

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

如果您决定使用HTTP基本/摘要式身份验证,则可以使用HTTP身份验证模块。

// 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);

我想你可以在JBoss中为给定的部分生成一个auth令牌,该令牌是:

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

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