2.7 KiB
2.7 KiB
5.3
Créer les utilisateurs
uv run .\manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_user('alice', 'alice@example.com', 'alicepass123'); User.objects.create_user('bob', 'bob@example.com', 'bobpass123'); print('Users created')"
Créer les jetons
uv run .\manage.py shell -c "from django.contrib.auth.models import User; from rest_framework.authtoken.models import Token; print('ALICE:', Token.objects.get_or_create(user=User.objects.get(username='alice'))[0].key); print('BOB:', Token.objects.get_or_create(user=User.objects.get(username='bob'))[0].key)"
Exposer les jetons
$ALICE = "49a597b676ef22f8bd33ed94d3e9e657c05c4338"
$BOB = "b710b34ee3244c4da396f6d7a81d5d6d02d94441"
Créer équipement ALICE
$body = '{"hostname":"alice-srv","ip":"192.168.1.10","is_active":true}'
curl.exe -i -X POST -H "Authorization: Token $ALICE" -H "Content-Type: application/json" -d $body http://127.0.0.1:8000/api/equipments/
=> Résultat : 201
Créer équipement BOB
$body = '{"hostname":"bob-srv","ip":"192.168.1.11","is_active":true}'
curl.exe -i -X POST -H "Authorization: Token $BOB" -H "Content-Type: application/json" -d $body http://127.0.0.1:8000/api/equipments/
=> Résultat : 201
Lister équipement ALICE
curl.exe -i -H "Authorization: Token $ALICE" http://127.0.0.1:8000/api/equipments/
=> Résultat : 200
Lister équipement BOB
curl.exe -i -H "Authorization: Token $BOB" http://127.0.0.1:8000/api/equipments/
=> Résultat : 200
BOB tente de créer un équipement ALICE
$body = '{"hostname":"forged-srv","ip":"192.168.1.99","is_active":true,"owner":1}'
curl.exe -i -X POST -H "Authorization: Token $BOB" -H "Content-Type: application/json" -d $body http://127.0.0.1:8000/api/equipments/
=> Résultat : 201 (c'est pas normal) (alors en fait, même en forçant le "owner" avec "Alice" ça le créé pour Bob. Donc ça n'empêche pas la création mais ça empêche de le faire en un autre nom. J'investiguerai plus tard)
5.4
100 requêtes en tant que "Bob"
for ($i = 1; $i -le 100; $i++) {
curl.exe -s -o /dev/null -w "%{http_code}`n" -H "Authorization: Token $BOB" http://127.0.0.1:8000/api/equipments/
}
=> Résultat : que des 200.
En changeant :
"DEFAULT_THROTTLE_RATES": {"user": "1000/day", "anon": "50/day"},
en
"DEFAULT_THROTTLE_RATES": {"user": "5/minute", "anon": "50/day"},
J'obtiens bien :
> for ($i = 1; $i -le 100; $i++) {
>> curl.exe -s -o /dev/null -w "%{http_code}`n" -H "Authorization: Token $BOB" http://127.0.0.1:8000/api/equipments/
>> }
200
200
200
200
200
429
429
429
429