私は、このA手の込んだだろうと思いましたビット。これは、ここで行われたことの一部を使用するだけでなく、ここで私たちに与えた例のようにしようとしました。 http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
非同期である必要があるかどうかわからないのですか?私はしなかったし、これは基本的なスタートのためにかなりうまくいくように思えた。
public class Authorize
{
public Authorize() { }
public AuthPolicy AuthorizeHandler(TokenAuthorizerContext request, ILambdaContext context)
{
var token = request.AuthorizationToken;
switch (token.ToLower())
{
case "allow":
return generatePolicy("user", "Allow", request.MethodArn);
}
return null;
}
private AuthPolicy generatePolicy(string principalId, string effect, string resource)
{
AuthPolicy authResponse = new AuthPolicy();
authResponse.policyDocument = new PolicyDocument();
authResponse.policyDocument.Version = "2012-10-17";// default version
authResponse.policyDocument.Statement = new Statement[1];
Statement statementOne = new Statement();
statementOne.Action = "execute-api:Invoke"; // default action
statementOne.Effect = effect;
statementOne.Resource = resource;
authResponse.policyDocument.Statement[0] = statementOne;
return authResponse;
}
}
public class TokenAuthorizerContext
{
public string Type { get; set; }
public string AuthorizationToken { get; set; }
public string MethodArn { get; set; }
}
public class AuthPolicy
{
public PolicyDocument policyDocument { get; set; }
public string principalId { get; set; }
}
public class PolicyDocument
{
public string Version { get; set; }
public Statement[] Statement { get; set; }
}
public class Statement
{
public string Action { get; set; }
public string Effect { get; set; }
public string Resource { get; set; }
}
この質問は、ラムダを使用するAPIゲートウェイでのカスタム認証に固有のものです。私はAPIゲートウェイが入力を提供するので、それが提供する入力タイプまたはそれが期待する戻りタイプを知らないので、入力を制御できません。 – user2689570
私はそれが同じだと思います。たとえば、C#といくつかの類似点を持つaswlabsのJava実装を見てみましょう。 https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints/java/src 彼らが持っているあなたが例/ APIGatewayAuthorizerHandler.javaを見ると、あなたが見ることができます。 'public AuthPolicy handleRequest(TokenAuthorizerContext input、コンテキストコンテキスト){..} ' –