Skip to content

Authenticate sith user from third-party app #1203

@imperosol

Description

@imperosol

Motif

Pour le bon fonctionnement du bot, il faut pouvoir récupérer des données utilisateur depuis le site, avec le consentement de l'utilisateur concerné, de manière sécurisée et sans possibilité de falsification ou d'usurpation d'identité.
Ce branchement doit impérativement être fonctionnel avec un bot discord. Dans l'idéal il doit fonctionner pour n'importe quel type d'intégration.

Interactions attendues

L'interaction doit commencer du côté de l'application externe. Lorsque l'utilisateur le demande, l'application doit fournir à l'utilisateur une URL contenant dans ses paramètres l'URL de retour que le site doit appeler si l'authentification réussit.

En cliquant sur cette URL, l'utilisateur doit être dirigé vers une page du site AE où on lui demandera de valider un formulaire expliquant les données qu'il donnera à Discord, les buts d'utilisation de ces données et son consentement explicite pour transmettre ces dernières.

Une fois cela fait, le site enverra une requête à l'url de retour fournie initialement, avec les données utilisateur. L'application se chargera alors de faire l'enregistrement, puis renverra un code de succès. A la réception d'une réponse HTTP OK, le site affiche à l'utilisateur un message de succès ; l'application externe se charge de faire de même de son côté.

Diagramme représentatif :

sequenceDiagram
    participant App
    actor User
    User->>+App: Commande<br/>d'authentification
    App-->>User: url de connexion<br/>avec signature
    User->>+Sith: GET url
    alt Utilisateur non-connecté
        Sith->>+User: Formulaire de connexion
        User-->>-Sith: Connexion
    end
    Sith->>Sith: vérification de la signature
    Sith->>+User: Formulaire<br/>des conditions<br/>d'utilisation
    User-->>-Sith: Validation
    Sith->>+App: URL de retour
    App->>App: Enregistrement
    App-->>-Sith: 200 OK
    Sith-->>-User: Message de succès
    App-->>-User: Message de succès
Loading

Sécurité des échanges

Tous les échanges entre l'app externe et le site au cours de ce processus (tous !) doivent être signés, soit au moyen d'une clef HMAC, soit par un jeu de clefs RSA.
Chaque clef ne doit être utilisable que par un seul client d'API et doit être aisément révocable.

RGPD

Ce processus implique la transmission de données à une application autre que le site AE, et l'usage subséquent de ces données à des fins qui ne sont pas directement contrôlées par l'AE.

Les utilisateurs qui s'engagent dans la liaison de le compte AE avec une application externe doivent impérativement en être informés et donner leur consentement explicite à la transmission et à l'utilisation de leurs données par l'application externe.

Metadata

Metadata

Assignees

No one assigned

    Labels

    APICe qui concerne l'usage et/ou la modification de l'API du siteb: corebackendpythonPull requests that update Python codes: usertype: featureThe issue is a request for new functionality including changes, enhancements, refactors, etc

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions