Meilleur moyen de sécuriser un service WCF sur Internet avec quelques clients

Je cherche à exposer un service à une sélection de clients sur Internet. À ce stade, l’API est très petite et je souhaite uniquement que les clients connus puissent accéder au service. Je n’ai pas besoin de pouvoir identifier les clients maintenant, mais je prévois qu’à l’avenir, je devrais être capable d’identifier les clients à mesure que l’API grandit.

Je me demande quel est le meilleur moyen de sécuriser le service à court terme, dans la perspective à plus long terme, de pouvoir éventuellement autoriser le client à accéder à des méthodes spécifiques du service?

Je pensais à l’utilisation de la sécurité des transports – c’est-à-dire SSL. Dois-je aussi utiliser la sécurité des messages avec

clientCredentialType="certificatee" 

dans quelle classe chaque client aura son propre certificate qui l’authentifiera avec le service?

Ou devrais-je simplement fournir à chaque client une clé API qui fournira un niveau similaire de différenciation client?

Toutes les autres suggestions sont les bienvenues.

Notez qu’il s’agit d’une interface de service à service – c’est-à-dire pas d’une application cliente. Le nombre d’utilisateurs du service sera limité et je ne prévois pas de devoir appliquer la sécurité au niveau des données, plus encore au niveau de l’access à la méthode.

Vous pouvez utiliser une authentification de nom d’utilisateur / mot de passe personnalisée pour authentifier des utilisateurs ou une authentification AD pour contrôler qui peut utiliser le service.

La meilleure solution à mon esprit pour le moment car vous ne voulez pas identifier les utilisateurs est d’utiliser l’authentification par nom d’utilisateur / mot de passe personnalisée et d’autoriser tout le monde pour l’instant. À l’avenir, lorsque vous souhaitez identifier des utilisateurs, modifiez le code et activez la validation.

Consultez la page https://msdn.microsoft.com/en-us/library/aa702565(v=vs.110).aspx . Dans la fonction validate, ne lancez aucune exception pour l’instant

Donnez-leur une clé à chacun et ils devront soumettre une signature SHA avec leur demande (une version codée de certains / de tous les parameters qu’ils transmettent, afin que vous puissiez également exécuter le SHA et le vérifier).

L’approche la plus simple pour l’instant serait d’append SSL à votre hôte IIS, puis de changer les clients pour qu’ils se connectent sur HTTPS, comme ceci …