Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
是否可以使用node.js passport.authenticate()对AWS api网关中的承载令牌进行身份验证?_Node.js_Aws Lambda_Passport Azure Ad_Amazon Api Gateway - Fatal编程技术网

是否可以使用node.js passport.authenticate()对AWS api网关中的承载令牌进行身份验证?

是否可以使用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

我们有一个前端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:

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