web-dev-qa-db-ja.com

Cognitoアプリクライアントシークレットとは

documentations にはApp Client Secretがありますが、その目的はどこにもありません。

私はjavascript SDKがそれを使用していないことを知っています。おそらく、多くのjavascriptアプリケーションがシークレットを公開する場所ではなく、ユーザーのブラウザーで実行しているためと思われますが、それは私の推測です。

これがApp Client IDのパスワードのようなものである場合、App Client IDApp Client Secretも盗むことができるため、セキュリティがどのように向上するかわかりません。さらに、App Client IDはかなりランダムであり、ブルートフォース攻撃に十分なセキュリティを提供します。

私はこの秘密の目的は何ですか、コグニトがそれをどのように使用するか、そしてそれがどのような機能を提供するかを知りたいです

13
mFeinstein

はい、そうです。パスワードのようなものです。なぜ使用されるのかについては、これはCognito固有のプロパティではなく、OAuth2標準の一部です。実際、ブラウザーで実行されているパブリックアプリでアプリシークレットを使用しても意味がありません。一般に、パブリックアプリを開発する場合、クライアントシークレットは使用されません。その場合は、安全に保管する責任があります。

あなたが言ったように、Cognitoに来ると、そのJS SDKはクライアントシークレットを使用しません(あるはずです)。ただし、AWS CLIまたはboto3を使用する場合は、クライアントシークレットを使用できます。この場合、アプリクライアントにシークレットがある場合、このシークレットと他のいくつかのパラメーター(username + clientid I think)を使用してハッシュを計算し、それをパラメーターとして渡す必要があります。

しかし、セキュリティの点では、それは実際には違いをもたらしません。

12
agent420

App Client IDおよびApp Client Secretは、マシン間通信を使用している場合に必要です。この種の通信では、ユーザーとパスワードがありません。そのための付与タイプがあります:Client Credentials。これを少しよく理解するには、以下をチェックしてください https://auth0.com/docs/api-auth/which-oauth-flow-to-use

3
Xavier Ramírez