Skip to content

Données publiques

Thomas Chauchefoin edited this page Mar 29, 2016 · 3 revisions

Toutes les URL de données publiques sont préfixées de /api/public, par exemple :


        /api/public/users
        /api/public/orgas

Il existe de nombreuses données publiques mises à disposition des étudiants par l'UTT, principalement concernant ses étudiants et son personnel (via l'annuaire LDAP). Cependant, cet accès est limité à l'intérieur de l'UTT et ne permet donc pas de développer aisément des applications ou des sites internet en les utilisant.

L'API d'EtuUTT résoud ce problème en proposant ces données et d'autres récoltées à partir des étudiants eux-même directement à travers OAuth.

Ces données publiques sont en lecture seule (vous ne pouvez y accéder que par la méthode GET) et ne requierent aucun scope spécial.

Accéder aux données publiques seules: client_credentials

Si vous n'avez besoin d'accéder qu'aux données publiques mises à disposition par l'API, vous n'avez pas besoin de demander d'accès à l'utilisateur, car les données sensibles ne vous intéresse pas. Vous pouvez donc utiliser le type d'authentification appelé client_credentials.

Ce type d'authentification utilise les identifiants fournit par EtuUTT à votre client (le client ID et le client secret) pour créer un accès ne possédant que le scope public.

Ce type d'authentification est idéal pour commencer car il est très simple. Par exemple, pour obtenir un token d'accès avec client_credentials, en PHP avec Guzzle :

    $client = new Client([
        'base_url' => 'https://etu.utt.fr/',
        'defaults' => [
            'auth' => ['<client_id>', '<client_secret>']
        ]
    ]);

    $response = $client->post('/api/oauth/token', [ 'body' => [
        'grant_type' => 'client_credentials',
    ]]);

    var_dump($response->json());

Vous obtenez alors quelque chose ressemblant à :

    {
        "http": {
            "status": 200,
            "message": "OK"
        },
        "response": {
            "access_token": "4b8f0f6dccf3ccd998ae090f7f9afc37083667b7",
            "expires_in": 3600,
            "token_type": "Bearer",
            "scope": "private_user_account private_user_schedule private_user_organizations public"
        }
    }

Comme vous le comprenez probablement, vous avez dans ce résultat :

  • un token d'accès : 4b8f0f6dccf3ccd998ae090f7f9afc37083667b7. C'est ce token qu'il faudra garder pour effectuer de multiples requêtes avec son autorisation ;

  • la date d'expiration du token d'accès, ici dans 1 heure (3600 secondes) ;

  • un type de token (Bearer) qui ne vous intéresse pas (cela correspond à la confiance accordée au cient par EtuUTT) ;

  • Une liste de scopes qui ont été donnés au token : ici, vous pouvez donc accéder aux données publiques (vous avez le scope public) ;

Vous vous demandez probablement pourquoi vous avec les scopes private_user_account, private_user_schedule, private_user_organizations alors que je vous ait dit que vous ne pouriez accéder qu'aux donnée publiques de l'API.

Et bien l'idée est simple : si vous utilisez le type client_credentials, vous povuez automatiquement accéder aux données de l'utilisateur gérant l'application comme si vous étiez connecté. Cela signifie donc que vous pouvez accéder à vos propres données si vous avez créé ce client.

Clone this wiki locally