web-dev-qa-db-fra.com

Qu'est-ce qu'un secret client Cognito App

Au documentations il y a un App Client Secret, mais je ne trouve nulle part son but.

Je vois que le SDK javascript ne l'utilise pas, je ne sais pas non plus pourquoi, probablement parce que de nombreuses applications javascript fonctionnent sur le navigateur des utilisateurs, pas un endroit pour exposer un secret, mais c'est ma conjecture.

S'il s'agit d'un mot de passe pour le App Client ID, Je ne vois pas comment cela améliore la sécurité, car il peut cependant voler votre App Client ID pourra voler le App Client Secret ainsi que. En outre, le App Client ID est assez aléatoire et devrait fournir suffisamment de sécurité pour les attaques par force brute.

Je voudrais savoir quel est le but de ce secret, comment cognito l'utilise et quelles fonctionnalités il fournit.

13
mFeinstein

Oui, tu as raison. C'est quelque chose comme un mot de passe. Quant à savoir pourquoi il est utilisé, ce n'est pas une propriété spécifique de Cognito mais une partie de la norme OAuth2. En effet, l'utilisation de secret d'application dans des applications publiques fonctionnant sur des navigateurs n'a aucun sens. En général, lors du développement d'une application publique, le secret client n'est pas utilisé. Si vous le faites, vous êtes responsable de le stocker en toute sécurité.

En venant à Cognito, comme vous l'avez dit, son SDK JS n'utilise pas de secret client (comme il se doit). Cependant, si vous utilisez AWS CLI ou boto3, vous pouvez utiliser le secret client. Dans ce cas, si votre client d'application a un secret, vous êtes censé calculer un hachage à l'aide de ce secret et d'autres paramètres (nom d'utilisateur + id client je pense) et le passer comme paramètre.

Mais en termes de sécurité, cela ne fait pas vraiment de différence.

12
agent420

App Client ID et App Client Secret sont nécessaires lorsque vous utilisez une communication machine à machine, dans ce type de communication, vous n'avez pas d'utilisateur ni de mot de passe. Il existe un type de subvention pour cela: Client Credentials. Pour mieux comprendre cela, vous pouvez vérifier https://auth0.com/docs/api-auth/which-oauth-flow-to-use

3
Xavier Ramírez