AWS API GatewayとLambdaでトークンベースの認証を使ってサーバーレスアプリケーションを構築する
AWSでは、AWS Lambda、Amazon API Gateway、およびJavaScriptアプリケーションを使って、強力かつサーバーレス、そして高度にスケーラブルなAPIとアプリケーションを作成することができます。
サーバーレスアプリケーションはカスタムコードをコンピュートサービスとして実行します。その際、サービスをホストするための運用環境を維持する必要はありません。代わりに、AWS Lambdaなどのサービスがユーザーのためにコードを実行します。
Amazon API GatewayはLambda関数の前にサービスレイヤーを追加することで、セキュリティを拡張し、入力・出力メッセージの変換を管理し、スロットリングや監査などの機能を提供して、AWS Lambdaの機能を拡張します。サーバーレスアプローチにより、スケールアウトやフォールトトレランスなどの懸念事項がコードを実行するコンピュートサービスの責任となるため、運用上の課題が簡素化されます。
ただし、通常は、XやFacebookなどのソーシャルプロバイダーから、あるいは独自の組織内のActive Directoryや顧客データベースから、APIを既存のユーザーに紐づけておくとよいでしょう。このチュートリアルでは、AWSに対するAuth0の委任とAWS Identity and Access Management(IAM)との統合を使用して、既存のユーザーに対してAmazon API Gatewayメソッドのアクセスを認可する方法を示します。
次に、AWS Lambda関数を使ってAmazon API Gatewayをセットアップし、AWS IAMロールでこれらの関数を安全に保護してから、Auth0の委任を使ってAWS IAMロールのトークンを取得する方法を一通り説明します。この後、内部データベースやソーシャルユーザーなど様々なクラスのユーザーに異なるアクセス許可を割り当て、JSON Web Token(JWT)を使ってIDフローを実行する方法を示します。
以下の手順を踏むことになります。