Bonjour,

Je ne sais pas trop où poster car ma question est assez générale. mais vu que je travaille en java le l'ai mise ici.

J'ai un grand (très grand) nombre d'applications qui doivent communiquer entre elles.
Aujourd'hui la situation est l'héritage de 50 ans d'évolutions. Elle est très hétérogène.

Nous sommes en train de mettre en place une communication basé sur REST.
la question concerne la sécurité.

Une Appli1 envoie ou demande des données (PUT/POST/GET) à une Appli2.
Cette communication n'est pas le fait d'un utilisateur. il n'y a donc pas de notion de user associé à l'échange.

sachant un très grand nombre d'applications peuvent potentiellement elle aussi invoquer le même service sur l'Appli2 comment garantir que la demande provient bien de l'application qui prétend l'envoyer.

J'ai trouvé beaucoup de doc concernant les users. Essentiellement basé sur un SSO mais là il n'y a pas d'utilisateur.

j'ai pensé utiliser tout de même un SSO genre OpenID Connect.
l'Appli1 prends un token sur le SSO et s'en sert pour communiquer. l'Appli2 vérifie le token pour exécuter la demande.

Mais cela pose deux problèmes on a reporté le problème de certification de l'authentification de l'Appli1 sur le dialogue entre l'Appli1 et le SSO.
et cela multiplies les échanges qui sont déjà extrêmement nombreux.

J'ai aussi envisagé l'utilisation de clefs publiques et privées chaque appli à un couple de clefs et utilise sa clef privé et la clef publique de l'appli à contacter pour signer voire crypter l'échange.
Cette solution demande une gestion complexe des clefs. car il s'agit de gérer des liens unidirectionnel Appl1=>Appl2 pour des milliers d'applications. de plus cette solution ne permet pas de gérer quels services sont autorisés pour Appl1 sur l'Appl2
cela à l'avantage de réduire les communication un appel un seul échange sur le réseau.

Enfin un mix des deux a aussi été envisagé.
on utilise les clefs publique/privée entre Appl1 et SSO pour demander le token d'échange vers Appl2 et on retombe dans le cas 1 en ayant réglé qu'une des deux problème.

Du coup je viens vers vous pour savoir s'in n'existe pas un standard ou un bonne pratique sur le sujet.