これには、カスタムオーソライザまたはAWS Cognitoユーザプールのいずれかを使用できます。
カスタムオーソライザを使用する場合は、ラムダ関数を作成して認証パーツを作成できます。あなたがより多くを読むことができますし、カスタム承認者using this linkを実装する方法
console.log('Loading function');
exports.handler = (event, context, callback) => {
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.toLowerCase()) {
case 'allow':
callback(null, generatePolicy('user', 'Allow', event.methodArn));
break;
case 'deny':
callback(null, generatePolicy('user', 'Deny', event.methodArn));
break;
case 'unauthorized':
callback("Unauthorized"); // Return a 401 Unauthorized response
break;
default:
callback("Error: Invalid token");
}
};
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;
}
// Can optionally return a context object of your choosing.
authResponse.context = {};
authResponse.context.stringKey = "stringval";
authResponse.context.numberKey = 123;
authResponse.context.booleanKey = true;
return authResponse;
}
を次のようにAWSの文書からサンプルコードです。
ユーザープールを使用している場合、APIをユーザープールに統合できます。統合を行うには、this documentationで定義されている手順に従います。 は、新しいAPIを作成するか、APIゲートウェイの既存のAPIを選択し
- API Gatewayコンソールを使用して、ユーザーのプールの承認者を作成するには、サイトから
を
引用します。
- メインナビゲーションペインで、指定されたAPIの下でAuthorizersを選択します。
- Authorizersの下にあるCreateを選択し、Cognito User Pool Authorizerを選択します。
この承認者を設定するには:
- Cognito地域のための地域を選択します。
- Cognito User Poolの場合は、使用可能なユーザープールを選択します。
- Authorizer nameフィールドには、選択したユーザープール名が自動的に入力されます。ただし、必要に応じてカスタマイズすることができます。
- [Identity token source]フィールドは、デフォルトで[method.request.header.Authorization]に設定されます。ただし、希望する場合は をカスタマイズすることができます。既定値を使用すると、API呼び出し者の 識別トークンを含む受信要求ヘッダーの名前が になります。
- オプションで、App Client ID regexフィールドに正規表現を入力して、ユーザープールに関連付けられたクライアントIDを検証します。
- 「作成」を選択すると、ユーザープールとAPIの統合が完了します。
- 認可者を作成した後は、オプションで、ユーザープールからプロビジョニングされたIDトークンを指定してテストすることができます。あなたのAPIの方法を選択します(または作成)
。
- メソッドリクエストを選択します。
- Authorization Settingsで、Authorizationフィールドで編集アイコンを選択します。
- ドロップダウンリストから利用可能なAmazon Cognito User Poolオーソライザの1つを選択します。
- チェックマークアイコンを選択して設定を保存します。
これらの手順を他の方法で繰り返します。
[更新]アシャンの提案した方法で回答を更新します。
もう1つの方法は、APIゲートウェイでIAM認証を使用するCognitoユーザーグループを使用することです。グループにリンクされたロールに割り当てられたポリシーを使用してアクセス許可を与えることができます。
もう1つの方法は、apiゲートウェイでiam認証を使用するcognitoユーザーグループを使用することです。アクセス許可は、グループにリンクされたロールに割り当てられたポリシーによって指定できます。 – Ashan
@アシャンは指摘に感謝します。あなたのメソッドで答えを更新しました。 –