Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quelques problèmes avec l'API lorsque le grant-type est "client credentials" #6496

Open
philippemilink opened this issue Apr 30, 2023 · 0 comments
Labels
C-API Concerne une API du site S-BUG Corrige un problème

Comments

@philippemilink
Copy link
Member

Plusieurs petits problèmes avec l'API, initialement évoqués sur le forum, et également rapportés par Sentry.

  1. Se connecter en tant qu'admin
  2. Aller dans la zone d'admin http://127.0.0.1:8000/admin, ajouter une nouvelle application Oauth2
  3. Choisir un client type Public et un Authorization grant type Client credentials, l'associer à l'utilisateur user1. Noter le client id, le user id et le client secret. Sauvegarder.
  4. Dans un terminal :
    ZDS_CRED=$(echo -n '<le client id>:<le client secret>' | base64) 
    curl -X POST -H "Authorization: Basic $ZDS_CRED" -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" http://127.0.0.1:8000/oauth2/token/ -d '{"grant_type": "client_credentials"}'
    curl -X GET -H "Authorization: Bearer <l'access token>" "http://127.0.0.1:8000/api/forums/message/108/karma/" # ou autre id de message qui existe à la place de 108

Là on se prend une erreur 500. La backtrace dans le terminal qui a lancé ZdS est plus lisible que le code HTML renvoyé par la commande curl.

De ce que je comprends, avec une application authentifiée avec un client credentials, on n'a pas d'utilisateur associé à la requête, donc il faut changer cette ligne en :

if request is not None and request.user is not None:

Maintenant, dans zds/settings/dev.py, passer DEBUG à False. Relancer la dernière commande curl pour obtenir le karma, on obtient maintenant une erreur dans la génération de la page d'erreur 500, à cet endroit, car on essaie d'accéder à un attribut de user qui est NULL.

On peut corriger ces différents points, mais je me demande :

  • est-ce normal qu'on n'ait pas d'utilisateur associé à la requête lorsqu'on interagit avec l'API avec un client credentials ?
  • est-ce que ce ne serait pas plus simple de désactiver la possibilité d'avoir des applications avec des grant type client credentials ? (dans notre doc, on recommande plutôt d'utiliser des ressource owner-based)
@philippemilink philippemilink added S-BUG Corrige un problème C-API Concerne une API du site labels Apr 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-API Concerne une API du site S-BUG Corrige un problème
Projects
Status: À discuter
Development

No branches or pull requests

1 participant