是否可以使用node.js passport.authenticate()对AWS api网关中的承载令牌进行身份验证?
我们有一个前端react应用程序,它具有MSAL登录,使用aws api网关api端点进行后端操作。在登录过程之后,我想将承载令牌发送到api并对其进行身份验证。根据我在网上读到的内容,您可以使用node.js和passport.authenticate()来实现这一点。问题是试图在AWSAPI网关中实现这一点。因此,我提出了一个通过授权人lambda进行身份验证的方案。1) 使用aws serverless express在lambda中作为api代理运行express 2)使用passport azure ad模块设置BearStrategy。3) 运行passport.authenticate()对令牌进行身份验证。4) 从lambda 5)返回有效令牌后,api请求将继续 我刚刚将以下文件和必需的节点模块放入node.js lambda中。所以这本质上是客户端和api之间的中间环节。若令牌有效,将允许请求通过 在我的测试中,当应用BearStrategy:是否可以使用node.js passport.authenticate()对AWS api网关中的承载令牌进行身份验证?,node.js,aws-lambda,passport-azure-ad,amazon-api-gateway,Node.js,Aws Lambda,Passport Azure Ad,Amazon Api Gateway,我们有一个前端react应用程序,它具有MSAL登录,使用aws api网关api端点进行后端操作。在登录过程之后,我想将承载令牌发送到api并对其进行身份验证。根据我在网上读到的内容,您可以使用node.js和passport.authenticate()来实现这一点。问题是试图在AWSAPI网关中实现这一点。因此,我提出了一个通过授权人lambda进行身份验证的方案。1) 使用aws serverless express在lambda中作为api代理运行express 2)使用passpor
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context)
{
“名称”:“AzureAD:承载策略”,
“主机名”:“169.254.43.173”,
“pid”:8,
“级别”:30,
“msg”:“身份验证失败,原因是:找不到令牌”,
“时间”:“2020-08-24T23:48:35.497Z”,
“v”:0
}
如果有一种更简单的方法来验证承载令牌,那就太好了
Lambda index.js文件:
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)
exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context)
config.js
'use strict';
const config = {
identityMetadata: "https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration",
clientID: "xxxxxxxxxxxxxxxxxxxx",
validateIssuer: true,
loggingLevel: 'info',
passReqToCallback: false,
ignoreExpiration: true
};
module.exports = config