2017-01-31 3 views
0

Remarque: Je voudrais commencer en indiquant que la nature de cette requête est assez générale car j'explore les façons d'implémenter quelque chose plutôt que d'essayer de résoudre un problème spécifique. Problème de codage ou problèmeMasquage de plusieurs API derrière une API commune pour un utilisateur final

Je travaille sur un projet de middleware qui se situe entre un ensemble de producteurs (d'informations) et un seul consommateur.

Voici les exigences.

1) Les producteurs génèrent tous des données pour le consommateur mais ont leurs propres interfaces API. 2) Le consommateur ne veut pas vraiment coder pour l'API de chaque producteur et a donc demandé qu'une couche de transparence soit créée pour que tous les producteurs soient abstraits et qu'il ne dispose que d'une seule interface API pour le codage.

3) Plus de producteurs seront ajoutés de temps en temps.

4) Les informations que chaque producteur envoie seront, par nature, de type similaire (par exemple, des fonds d'actions - qui contiennent un ensemble défini d'attributs communs). Cependant, la représentation dans l'API de chaque producteur est à leur discrétion.

5) Il doit y avoir une communication sécurisée entre le consommateur et chaque producteur où le producteur vérifie le consommateur avant de fournir les données.

Je suis sûr que vous pourriez avoir des questions sur ces exigences ou demander plus de précisions, alors s'il vous plaît faites le moi savoir et je vais mettre à jour la question.

Cependant, voici mes questions et esperait quelques-uns des experts sur ce site, peut fournir des conseils et des conseils. A) J'ai été enclin à utiliser une API RESTful pour le consommateur avec des réponses JSON en utilisant un composant JAVA dans le backend pour faire les traductions. Cela permettrait d'augmenter le nombre de producteurs (et toutes leurs bizarreries et représentations discrétionnaires pourraient être retirées du consommateur). Pensez-vous que ce soit une bonne idée ou suggérez-vous une approche alternative? B12) Il y a un élément d'authentification et de non-répudiation ici. Chaque producteur peut avoir sa propre façon de mettre en œuvre ceci - soit par des signatures numériques, des jetons et des codes d'accès, des mots de passe uniques envoyés au consommateur pour fournir une authentification à 2 facteurs, etc. Tous les conseils sur la façon de le mettre en œuvre standardisé? Quelles technologies dois-je prendre en compte? C) Puisque les sessions d'authentification doivent être maintenues, est-ce contraire aux principes RESTful?

Toute aide ou réaction que vous pouvez fournir est très appréciée.

Répondre

0

Je vais essayer de vous donner ma vision de comment je résoudrais ce problème.

  1. Début du consommateur - vous que vous aurez seulement un consommateur pour que vous puissiez easly comprendre quel genre d'interaction API le cunsumer attend. Ensuite, vous pouvez concevoir un brouillon de l'API que votre middleware doit exposer. Cela vous aidera à concevoir et développer les fonctionnalités du middleware.

  2. Collectez toutes les exigences d'authentification - produire une liste de tous les types d'authentification que les « producteurs » requuire et garder à l'esprit que chaque consommateur « utilisateur » doit fournir toutes les informations nécessaires à tous les types de authenication.

  3. Auth MIddleware - avec les informations obtenues à partir du point 2, concevez un middleware d'authentification capable de gérer toutes les méthodologies d'authentification requises par vos producteurs. Cela signifie de penser à un moyen de gérer tous les pouvoirs des producteurs. Ce compoment interagir uniquement avec la logique Middleware

  4. Logic Middleware - comme son nom l'indique, gère toutes les interactions composant

    a. fournit une authentification simple vers le consommateur, par exemple un simple jeton d'adresse

    b. utilise un modèle propriétaire de domaine, cela vous libère du domaine spécifique de vos producteurs, bien que vous dites qu'ils sont cohérents et vous aide à concevoir des fonctions d'intégration avec une plus grande liberté et le découplage de tous les acteurs impliqués

    c. utilise le Auth Middleware à partir du jeton api fourni par le consommateur afin d'authentifier à chaque producteur impliqué dans l'orchestration spécifique

Hope cela pourrait vous aider!