2

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

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

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

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

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

我想答案取决于该应用程序是否使用 CORS,我对那里有意义的一切都很好。

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

谢谢!

4

3 回答 3

2

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

于 2013-08-21T19:30:56.900 回答
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);
于 2016-04-22T10:43:11.863 回答
1

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

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

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

于 2013-08-08T04:12:59.167 回答