documentations にはApp Client Secret
がありますが、その目的はどこにもありません。
私はjavascript SDKがそれを使用していないことを知っています。おそらく、多くのjavascriptアプリケーションがシークレットを公開する場所ではなく、ユーザーのブラウザーで実行しているためと思われますが、それは私の推測です。
これがApp Client ID
のパスワードのようなものである場合、App Client ID
はApp Client Secret
も盗むことができるため、セキュリティがどのように向上するかわかりません。さらに、App Client ID
はかなりランダムであり、ブルートフォース攻撃に十分なセキュリティを提供します。
私はこの秘密の目的は何ですか、コグニトがそれをどのように使用するか、そしてそれがどのような機能を提供するかを知りたいです
はい、そうです。パスワードのようなものです。なぜ使用されるのかについては、これはCognito固有のプロパティではなく、OAuth2標準の一部です。実際、ブラウザーで実行されているパブリックアプリでアプリシークレットを使用しても意味がありません。一般に、パブリックアプリを開発する場合、クライアントシークレットは使用されません。その場合は、安全に保管する責任があります。
あなたが言ったように、Cognitoに来ると、そのJS SDKはクライアントシークレットを使用しません(あるはずです)。ただし、AWS CLIまたはboto3を使用する場合は、クライアントシークレットを使用できます。この場合、アプリクライアントにシークレットがある場合、このシークレットと他のいくつかのパラメーター(username + clientid I think)を使用してハッシュを計算し、それをパラメーターとして渡す必要があります。
しかし、セキュリティの点では、それは実際には違いをもたらしません。
App Client ID
およびApp Client Secret
は、マシン間通信を使用している場合に必要です。この種の通信では、ユーザーとパスワードがありません。そのための付与タイプがあります:Client Credentials
。これを少しよく理解するには、以下をチェックしてください https://auth0.com/docs/api-auth/which-oauth-flow-to-use