2 votes

Sécurité des services web accessibles au public - Demandes internes

J'ai un service web public qui dispose d'un système de sécurité basé sur des jetons. La connexion se fait en fournissant un nom d'utilisateur et un mot de passe et un jeton unique est renvoyé qui est utilisé à chaque fois que le service est appelé.

Ma question est la suivante : Existe-t-il un moyen sûr de différencier un appel provenant de l'extérieur de notre réseau interne d'un appel provenant de l'intérieur ? J'aimerais accorder des privilèges élevés aux clients qui appellent le service depuis notre réseau interne. Plus précisément, nous avons un site web qui fonctionne sur le même réseau que nos services web et j'aimerais donner au site web des privilèges élevés lorsqu'il appelle notre service.

Existe-t-il un moyen sûr de procéder à cette opération lorsque le service web est accessible au public ? Ce que je ne veux pas, c'est qu'une personne extérieure à notre réseau interne ait accès à des privilèges élevés.

Les services ont été mis en œuvre en utilisant Java et le cadre CXF.

2voto

anfab Points 1061

C'est tout à fait possible. Voici comment je suggérerais de procéder.

Disposez d'un proxy inverse qui s'interpose entre votre application et les clients externes. Ce proxy inverse authentifie le jeton et les privilèges requis dans l'en-tête de la requête.

L'élévation des privilèges pour les clients internes peut se faire de la manière suivante

  1. Définir un en-tête d'authentification dans les requêtes sur le proxy inverse. Si cet en-tête a la valeur "true", il signale que l'appel provient d'un client externe. L'application peut décider s'il est nécessaire d'autoriser sur la base de cet en-tête. Les clients internes peuvent appeler ce service sans avoir à passer par une authentification/autorisation. Notez que cela éliminerait complètement toute authentification pour les clients internes.

  2. Disposer de règles sur le RP qui peuvent définir des en-têtes supplémentaires contenant des privilèges élevés en fonction de l'IP des appelants. L'adresse IP des clients internes peut être intégrée dans une liste pour laquelle cette règle s'applique.

  3. Disposer de deux points d'extrémité pour les clients internes et externes avec des proxies inversés sur chacun d'entre eux. Le client interne doit définir des privilèges élevés dans les en-têtes de la demande.

1voto

aet Points 3678

Vous avez des options, je peux penser à au moins deux approches immédiatement. 1) Exiger également une clé API pour accéder à vos services web, et accorder un accès spécial au site web en fonction de sa clé. 2) Élever les droits d'accès en fonction de l'adresse IP du demandeur (site web ou réseau interne).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X