簡體   English   中英

如何在AWS API Gateway和AWS Lambda中使用令牌(OAuth?)

[英]How to use tokens (OAuth ?) with AWS API Gateway and AWS Lambda

我已經使用本教程設置了一個AWS Lambda函數。 我使用此其他教程將AWS API Gateway與Lambda函數結合在一起。 第二個教程提供了以下代碼(A),用於lambda函數接受令牌。 出於測試目的,我成功使用了Postman,並在標頭中傳遞了“允許/拒絕/未經授權”以訪問lambda函數的不同部分。

我的問題是如何將真實令牌合並到API Gateway / AWS Lambda中? 我在注釋中看到(在下面的代碼塊-A中),它指出“ //調用oauth提供程序,破解jwt令牌等。 ”。 我不知道該怎么做。...我一直在網上搜索此示例(因為這是人們最常做的事情嗎?),但未能找到可靠的示例。 任何幫助將不勝感激! 請原諒我對此事的有限知識。

我的最終目標是:1)讓來自移動應用程序的未經身份驗證的用戶訪問API網關終結點,然后該終結點將調用我的lambda函數來驗證令牌。 2)如果令牌已經過驗證,則將調用另一個lambda函數來執行操作。

一種

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;

}

例子:

  1. 使用自編碼訪問令牌的示例
    在Amazon API Gateway中引入自定義授權者AWS Compute Blog

  2. 使用不切實際的訪問令牌的示例
    啟用Amazon API Gateway自定義授權AWS文檔

  3. 使用外部授權服務器的示例
    Amazon API Gateway自定義授權者+ OAuthAuthlete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM