8

は、私が得たものである -FacebookでAPIゲートウェイ通話を認証する方法は?ここ

問題:私は私のアマゾンAPIゲートウェイを許可するには、Facebookの認証を使用してREST APIのユーザーを開催しました。

私の理解:私はアマゾンCognitoがフェデレーションIDとして呼び出して、ユーザーを認証するために使用することができます知っています。次に、私はAuthenticate API Clients with Amazon Cognito Your User Poolを見ました。これはCognito User Poolを認証します。私はまた、Use Amazon API Gateway Custom Authorizers、カスタム認証から使用することがわかりました。しかし、私はCognito Federated Identities(つまり、ここではFacebook)を使って認証するためにAPI Gatewayをリンクすることはできませんでした。フェデレーションIDの場合はUser Poolと同じ手順を使用できますか?Custom Authorizersのように使用する必要がありますか? 私は少し混乱しています。どんな助けでも大歓迎です。

ありがとうございました。

答えて

10

Cognito連合アイデンティティとCognitoユーザープールは、さまざまなユースケースに対応しています。

Cognitoのユーザープールでは、サービスにアクセスできるユーザーを明示的に管理します。これは、APIへのアクセスを固定されたユーザーに限定する場合に便利です。

CognitoフェデレーションIDを使用すると、ユーザー管理がFacebook、Google、Amazonなどのアイデンティティプロバイダに委任されます。その場合、選択したアイデンティティプロバイダのユーザIDを持つ人は誰でもあなたのサービスにアクセスできます。これは、APIを広く利用できるようにしたいが、ユーザーごとの状態やリソースを管理するために、個々のIDをAPIユーザーに関連付ける必要がある場合に便利です。

フェデレーションIDを使用するには、APIゲートウェイメソッドを「AWS_IAM」認可を使用するように設定します。 Cognitoを使用してロールを作成し、それをCognito IDプールに関連付けます。次に、IDとアクセス管理(IAM)サービスを使用して、この役割にAPIゲートウェイメソッドを呼び出す権限を与えます。

+1

また、私が欲しいだけでなく、ユーザーが誰であるかも知りたいですか? B'se私は私のAPI呼び出しで異なるユーザーに異なる結果をもたらすでしょう。私の目的は、自分のユーザーを認証して、自分が誰であるかを知ることです。あなたの答えからの私の理解から、私たちがユーザーだけを認可していることがわかります。 – inblueswithu

+0

おそらく私は間違っているかもしれないし、コグニートが何をしているのか説明してください。 – inblueswithu

+1

APIゲートウェイは、$ context.identity.cognitoAuthenticationProvider、$ context.identity.cognitoIdentityId、$ context.identity.cognitoIdentityPoolId、$ context.identity.user、および$ context.identity.userArnを介してユーザーID情報を渡します。 [documentation here](http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference) –

関連する問題