Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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
Amazon web services 使用ApiGateway授权程序验证Github有效负载签名(X-Hub-Signature)_Amazon Web Services_Amazon Cloudformation_Aws Api Gateway_Lambda Authorizer - Fatal编程技术网

Amazon web services 使用ApiGateway授权程序验证Github有效负载签名(X-Hub-Signature)

Amazon web services 使用ApiGateway授权程序验证Github有效负载签名(X-Hub-Signature),amazon-web-services,amazon-cloudformation,aws-api-gateway,lambda-authorizer,Amazon Web Services,Amazon Cloudformation,Aws Api Gateway,Lambda Authorizer,我目前正在开发一个简单的api来接收Github事件有效负载,我想验证它们是否来自正确的源。有了这个,我就可以在请求头中使用hmac签名(由github使用我提供的秘密生成)。为了验证签名,ApiGateway授权人需要签名(X-Hub-signature)、用于生成签名的秘密以及消息正文。据我所知,Api网关不允许您将主体传递给Api网关授权者。有人知道一种不需要额外的代理lambda和s3的方法吗 *注意:请求者是Github Webhook服务(无法将主体添加到标题) 基本ApiGatew

我目前正在开发一个简单的api来接收Github事件有效负载,我想验证它们是否来自正确的源。有了这个,我就可以在请求头中使用hmac签名(由github使用我提供的秘密生成)。为了验证签名,ApiGateway授权人需要签名(X-Hub-signature)、用于生成签名的秘密以及消息正文。据我所知,Api网关不允许您将主体传递给Api网关授权者。有人知道一种不需要额外的代理lambda和s3的方法吗

*注意:请求者是Github Webhook服务(无法将主体添加到标题)

基本ApiGateway身份验证文档: 以下是您的操作方法

将您的内容传递到传入请求的授权标题,它将传递给您的自定义授权人

从下面的属性中获取的内容

event.authorizationToken

其中,事件是传递给lambda的参数之一(第1个)

我目前加密并将所有信息添加到该头中,并将其发送到自定义授权人lambda

您还可以访问自定义授权器lambda中的其他参数,如下所示:

var headers = event.headers;
var queryStringParameters = event.queryStringParameters;
var pathParameters = event.pathParameters;
var stageVariables = event.stageVariables;
var requestContext = event.requestContext;

希望能有所帮助。

tyler据我所知,只要您收到请求,就会提供完整的请求对象。包括头、路径、查询字符串、阶段变量或上下文变量请求参数。尝试记录请求,希望您能找到答案。我不知道我是否没有理解这一点,但我遇到的问题是,请求是由Github生成的,并设置为我的端点(Github webhook)。因此,我无法格式化头部(除非我想在我的swagger api cloudformation文件中创建一个大而丑陋的重新模板)。这就是你所指的吗?很抱歉,问题中没有此内容(已更新)。如果您将整个请求发送给您的授权人,如果您注意到回答的后面部分,您可以记录来自传入请求的所有详细信息并验证它们,并根据请求内容发送“访问”或“拒绝”。