web-dev-qa-db-ja.com

AWS API GatewayでOAuth2認証プロバイダーを設定する方法は?

AWSには API Gateway があり、APIのセットアップ、管理、監視が非常に簡単になります。ただし、リソースメソッドに設定できるセキュリティ認証設定は、AWS-IAMに制限されています(これは内部vpnロールですか?)。

このテーマに関する私の研究は、 AWS Cognitoプール の設定を示しているようですが、awsコンソールで設定する場合、プロバイダーのオプションはAmazonです。 、FacebookGoogle+TwitterOpenID、およびCustom。その場合、Customを使用すると思いますか?次に、独自のEC2インスタンスをOAuth2認証プロバイダーサーバーとしてセットアップします。

Oauth2が最近非常に人気があることを考えると、このためのAWSサービスがないことに驚かされます。代わりにOpenIdまたはSAMLルート全体を行っているようです。また、クラウドでOauth2プロバイダーをすばやくセットアップする方法に関するガイドが不足していることにも驚かされます。

任意の助けをいただければ幸いです。

45
cosbor11

(1)OAuth 2.0エンドポイント( 承認エンドポイント および トークンエンドポイント )をAPI Gatewayに実装しますか?言い換えると、API GatewayにOAuth 2.0サーバー( RFC 6749 )を本当に実装しますか?

(2)または、OAuth 2.0 アクセストークン でAPI Gatewayに実装されたWeb APIを保護しますか?

これら2つはまったく異なるものです。

AWS-IAMの代わりにOAuth 2.0を選択したいと思われるので、あなたがやりたいことは(2)です。その場合、ここで例を見つけることができます:Amazon API Gateway + AWS Lambda + OAuth


2016年2月11日に、 AWS Compute Blog 、 " Amazon API Gatewayのカスタム承認者の紹介 "のブログエントリが、Customを発表しましたAuthorizerがAmazon API Gatewayに導入されました。このメカニズムのおかげで、Amazon API Gateway上に構築されたAPIは、クライアントアプリケーションによって外部承認者に提示されるBearerトークン(OAuthまたはSAMLトークンなど)の検証を委任できます。

新しいメカニズムであるCustom Authorierを利用するOAuthアクセストークンによってAmazon API Gateway上に構築されたAPIを保護する方法については、「 Amazon APi Gateway Custom Authorizer + OAuth 」で説明しています。


ご参考までに:

OAuth 2.0は認証ではなく承認のためのメカニズムです。しかし、人々はしばしば認証にOAuth 2.0を使用し、OAuth 2.0を認証に使用する多くのソフトウェアライブラリとサービスがあります。

Cognito(ID)は、承認ではなく認証に関連するソリューションです。

Cognitoのカスタムは、OpenID Connectプロバイダーを指定する場所です。 OpenID Connectは認証のためのソリューションです。物事を複雑にしているのは、「OpenID ConnectはOAuth 2.0の上に構築されている」です。詳細については、 OpenID Connectサイト を参照してください。

31

AWS API Gatewayは、Amazon Cognito OAuth2スコープをサポートしています now 。 Amazon Cognitoユーザープールのオーソライザーを作成し、それを API Gatewayの認証方法 として構成できます。== OAuthスコープを利用するには、 リソースサーバーとカスタムスコープ Cognitoユーザープールで。 Cognitoユーザープールで複数の アプリクライアント を異なるスコープで構成したり、ユーザープールからユーザーを認証しながらアプリケーションコードから異なるスコープを要求したりできます。 Cognitoから アクセストークン で受信したスコープに基づいて、API GatewayはAPIの呼び出し元を許可/拒否します。この機能を実装するための段階的なガイドは、 こちら にあります。

2
stackOp