0

プッシュ通知に登録するときに作成したSNSエンドポイントに、ユーザーのCognito IDを関連付けようとしています。私は、SNSアプリケーションのEndpointAddedトピックに接続されたラムダ関数を作成しました。エンドポイントが作成されるたびに発生しますが、エンドポイントをユーザーに関連付けるために使用できる情報は含まれていません。SNSからユーザーを取得するEndpointAddedイベント

多くの例では、ユーザーがカスタムユーザーデータとしてユーザーIDを追加していますが、これにより、任意のユーザーが他のユーザーの通知にサインアップすることができます。この関連付けを行うより安全な方法はありますか?

答えて

1

エンドポイントをLambdaまたはAPIGatewayにフロントエンドで登録し、Cognitoが販売するSigV4資格情報を使用してコールする場合、渡されたコンテキストにはコールを行ったクレデンシャルから抽出されたCognito IDが含まれます。これにより、エンドポイントに関連付けるID IDが改ざんされていないことが保証されます。

+0

私は、Cognito資格情報を使ってモバイルアプリからCreatePlatformEndpointを呼び出しています。ラムダからエンドポイントを作成してから、エンドポイント作成のトピックを使用するのではなく、アソシエーションを(別々に)実行することをお勧めしますか? – Paul

+0

そうです、私はモバイルアプリからの安全な方法しかないと言っています。 2つのオプションがあり、CreatePlatformEndpointからAPIG/Lambdaを呼び出してそこでアソシエーションを実行するか、モバイルデバイスからCreatePlatformEndpointを呼び出して、その後のAPIG/Lambda呼び出しとの関連付けを行います。 – behrooziAWS

+0

なんらかの理由で私は頭の中でエンドポイントの登録が実際のデバイスで行われるべきであると思っていました。ラムダ関数でこれを行う方がはるかに簡単で、SimpleNotificationServiceの依存関係を削除することができます。 – Paul

関連する問題