Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS/NodeJS/RESTEasy+;JBoss/LDAP堆栈_Javascript_Node.js_Rest_Angularjs_Jboss - Fatal编程技术网

Javascript AngularJS/NodeJS/RESTEasy+;JBoss/LDAP堆栈

Javascript AngularJS/NodeJS/RESTEasy+;JBoss/LDAP堆栈,javascript,node.js,rest,angularjs,jboss,Javascript,Node.js,Rest,Angularjs,Jboss,我想在如下设置的应用程序堆栈上寻找一些身份验证/安全机制或最佳实践: AngularJS前端 nodejsweb服务器 在JBoss AS 7上运行的RESTEasy后端 LDAP身份验证 如果可能的话,我想展示一下登录对话框,让它看起来很漂亮,而不是标准的浏览器HTTP身份验证对话框,但这更多的是一种偏好,而不是一种需求。我有一个相当好的感觉(基于)如何可以工作 我已经将RESTEasy服务设置为需要JBoss上的LDAP身份验证,这样用户就不能在没有身份验证的情况下直接访问REST端点;

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

  • AngularJS前端
  • nodejsweb服务器
  • 在JBoss AS 7上运行的RESTEasy后端
  • LDAP身份验证
如果可能的话,我想展示一下登录对话框,让它看起来很漂亮,而不是标准的浏览器HTTP身份验证对话框,但这更多的是一种偏好,而不是一种需求。我有一个相当好的感觉(基于)如何可以工作

我已经将RESTEasy服务设置为需要JBoss上的LDAP身份验证,这样用户就不能在没有身份验证的情况下直接访问REST端点;我已经使用了EE6领域/角色来扮演这个角色,但我愿意接受任何最有效的方式

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

我想答案取决于应用程序是否使用CORS,我对任何有意义的都没意见

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


谢谢

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

  • 放入一个节点服务器可以访问的数据存储区(可以是MongoDB、CouchDB,您可以选择)
  • 存储在客户端的cookie中,以连接到节点服务器

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

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

如果您决定使用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);

如果您已经有REST后端,我可以知道Node的位置吗?谁与LDAP服务器对话?Node(使用express)只是为AngularJS站点提供服务;Node可能需要也可能不需要点击LDAP来保护UI(我想这是我的问题的一部分),这肯定会起作用。在这种情况下,我希望坚持使用HTTP基本身份验证(无令牌),因此这不是我正在采用的方法。