我已使用此tutorial设置了AWS Lambda函数。我使用另一个tutorial将AWS API Gateway与我的Lambda函数合并。 第二个教程给出了下面的代码(A),用于接受令牌的lambda函数。出于测试目的,我成功使用了Postman并传入了"允许/拒绝/未授权"在标题中访问lambda函数的不同部分。
我的问题是如何将真实令牌合并到API Gateway / AWS Lambda中的?我在评论中看到(在下面的代码块中 - A)它表示" //调用oauth提供程序,破解jwt令牌等"。我不知道该怎么做....我一直在网上搜索这个例子(因为这是人们做的最常见的事情吗?)并且未能找到一个可靠的例子。任何帮助将不胜感激!请原谅我对这个问题的了解有限。
我的最终目标是: 1)来自移动应用程序的未经身份验证的用户访问API网关端点,然后调用我的lambda函数来验证令牌。 2)如果令牌已经过验证,则会调用另一个lambda函数来执行操作。
A
exports.handler = function(event, context) {
var token = event.authorizationToken;
// Call oauth provider, crack jwt token, etc.
// In this example, the token is treated as the status for simplicity.
switch (token) {
case 'allow':
context.succeed(generatePolicy('user', 'Allow', event.methodArn));
break;
case 'deny':
context.succeed(generatePolicy('user', 'Deny', event.methodArn));
break;
case 'unauthorized':
context.fail("Unauthorized");
break;
default:
context.fail("error dawg");
}
};
var generatePolicy = function(principalId, effect, resource) {
var authResponse = {};
authResponse.principalId = principalId;
if (effect && resource) {
var policyDocument = {};
policyDocument.Version = '2012-10-17'; // default version
policyDocument.Statement = [];
var statementOne = {};
statementOne.Action = 'execute-api:Invoke'; // default action
statementOne.Effect = effect;
statementOne.Resource = resource;
policyDocument.Statement[0] = statementOne;
authResponse.policyDocument = policyDocument;
}
return authResponse;
}
答案 0 :(得分:2)
示例:
使用自编码访问令牌的示例
Introducing custom authorizers in Amazon API Gateway(AWS Compute Blog)
使用不切实际的访问令牌的示例
Enable Amazon API Gateway Custom Authorization(AWS Documentation)
使用外部授权服务器的示例
Amazon API Gateway Custom Authorizer + OAuth(Authlete)