AngularJS/NodeJS/RESTEasy+JBoss/LDAP堆栈的身份验证机制
Authentication mechanisms for a AngularJS/NodeJS/RESTEasy+JBoss/LDAP stack
我正在这样设置的应用程序堆栈上寻找一些身份验证/安全机制或最佳实践:
- 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中到节点服务器
然后,节点服务器可以使用令牌来交叉验证客户端是否已正确验证并保护页面(登录页面除外)。
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 身份验证后获取Facebook图片
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- Twitter应用程序专用身份验证
- Passport.js成功的身份验证根本没有调用
- 通过JavaScript访问需要身份验证的页面
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用JavaScript捕获基本身份验证凭据
- javascript中的Spotify身份验证
- ServiceStack JavaScript服务器事件客户端的身份验证
- Twitter API 1.1无法对您2进行身份验证
- javascript api,用于在第三方域上存储身份验证令牌
- 实施Facebook's无用户身份验证的Graph API
- AngularJS/NodeJS/RESTEasy+JBoss/LDAP堆栈的身份验证机制
- 如何在使用不同的身份验证机制时安全地存储密码