[小ネタ] Cognito ユーザープールのアプリケーションクライアントでシークレットを生成しない方法
Application-specific settings with app clients - Amazon Cognito
The Amazon Cognito console creates app clients with client secrets when you select the Traditional web application and Machine-to-machine application options for application type. Choose one of these options to generate a client secret, or create the client programmatically with CreateUserPoolClient and set GenerateSecret to true.
CreateUserPoolClient API の GenerateSecret パラメーターで false を指定しましょう。
コンソールから作成した場合
Cognito ユーザープールをマネジメントコンソールから作成した時に作成されるリソースを確認してみた
generateSecret が true なのでクライアントシークレットも自動的に作成されています。
コンソールから Cognito ユーザープールを作成した場合、アプリケーションクライアントも自動的に作成されます。
この時、シークレットも自動生成されることを上記ブログで確認しました。
また、アプリケーションクライアントを追加する際にはシークレットの生成に関するオプションはありませんでした。

シークレットを生成したくない場合
上述の通り CreateUserPoolClient API からアプリケーションクライアントを作成する必要があります。
例えば、AWS CLI の場合は以下のコマンドを実行することでシークレットを生成せずにクライアントを作成可能です。
$ aws cognito-idp create-user-pool-client \
--user-pool-id your-userpool-id \
--client-name test \
--no-generate-secret \
--explicit-auth-flows "ALLOW_REFRESH_TOKEN_AUTH" "ALLOW_USER_SRP_AUTH" "ALLOW_USER_AUTH" "ALLOW_USER_PASSWORD_AUTH"
create-user-pool-client — AWS CLI 2.28.21 Command Reference
--generate-secret | --no-generate-secret (boolean)
When true , generates a client secret for the app client. Client secrets are used with server-side and machine-to-machine applications. Client secrets are automatically generated; you can’t specify a secret value.
AWS CLI の場合、no-generate-secret というオプションを指定することでシークレットの生成をなしにできます。
まとめ
今回は Cognito ユーザープールのアプリケーションクライアントでシークレットを生成しない方法を紹介しました。
どなたかの参考になれば幸いです。
Discussion