我正在运行nodejs / express应用程序作为我当前项目的后端解决方案。该应用程序正在使用passport-jwt来保护使用JWT的某些路由作为路由的标头授权,让我们将此路由称为 secure-route 。现在,我正在运行第二个应用程序,该应用程序需要访问安全路由而没有必要的授权标头。在用户成功授权后,登录路由生成必要的Authorization标头。
问题是,我不想提供(假的)jwt授权标题(不应该过期)。第二个应用程序/服务器应该使用更合适的授权策略访问我的第一个应用程序,如basic-auth。
我考虑在另一个路由器模块中进行安全路由私有,以便我可以通过重新路由来访问此私有路由。
那么我怎样才能使快速路线成为私人通道?或者是否有用于在不影响当前身份验证策略的情况下验证后端/服务器的解决方案?
编辑: 两个后端都在AWS上的无服务器结构上运行
答案 0 :(得分:0)
假设您提到的第二个应用程序在同一服务器或同一网络中的另一台服务器上运行,那么您可以执行以下操作:
只有从运行其他应用的特定IP地址访问时,您也可以只使用现有的一台服务器并路由并允许在没有授权标头的情况下进行访问。
如果您无法使用有关服务器网络拓扑的任何内容来在发出请求时安全地识别您的第二个应用,那么您必须为其创建一个秘密凭据并使用该凭据(类似于管理员)密码或管理员证书)。或者,切换到可以使用网络拓扑识别第二个应用程序的体系结构。
答案 1 :(得分:0)
你应该制作一个中间件并像这样使用它
/ 项目的起点 /
let CONGIG = require('./config');
let middleware = require('./middleware');
let app = express();
app.use(middleware.testFunction);
require('./route')(app);
'use strict';
let middleware = {
testFunction : function(req,res,next){
var condition = ''; /* now here you can write your logic on condition that when should be the condition be true and when it shoudld not be true based on the req.url , if the user is trying to access any public url you can simply allow the true part of the condition to run and if the person is accessing a private part of route then you can check for additional parameters in header and then set the condition true and if not you must send an error msg or a simple message as you are not allowed to access the private parts of the web application. */
if(condtion){
next();
} else {
res.send('error');
}
}
}
因此,通过设计一个middlware你基本上可以分离私有和公共路由的逻辑,以及在一个单独的模块中处理它的公共或私有路由的条件,它有点难以理解,但它更好首先过滤公共和私人路线,而不是后者检查。通过这种方式,在最初的命中,我们可以区分私人和公共路线。