2010-03-25 5 views
1

J'ai un client qui vend une application d'analyse de loterie. Dans cette application, il consomme un service web (mon service, je veux dire, appartient à la société pour laquelle je travaille actuellement) pour obtenir des données statistiques sur les résultats de loterie, les paris effectués, les montants, etc., à travers le monde. L'accès à ce webservice est payant, et chaque consultation coûte X crédits.Webservice sécurisé (WCF) sans stocker les informations d'identification sur l'application grand public

Certaines personnes ont désassemblé cette application de loterie et ont trouvé la clé api/clé d'authentification utilisée pour accéder au service web payant, et ont commencé à l'utiliser.

Je voudrais éviter que cela ne se reproduise, mais je ne trouve pas de moyen de m'authentifier sur le webservice sans stocker l'auth. clés sur l'application. Quelqu'un at-il des idées sur la façon d'accomplir une telle tâche? Ps1.Peut ne pas demander aux utilisateurs d'entrer n'importe quel type d'informations d'identification.

Doit être transparent pour eux (ils ne devraient pas savoir ce qui se passe).

ps2. Impossible d'utiliser des certificats numériques pour la même raison ci-dessus, sans mentionner qu'il est facile de les récupérer et que nous tomberions dans le problème d'origine.

Merci d'avance.

+0

Quelqu'un a suggéré la libération d'un client pour ce service (dans un dll par exemple) et l'envoi le long de la requête le hash de l'application, en conservant côté serveur une liste d'applications autorisées J'ai aimé l'idée, mais semble souffrir du même problème d'intégration de clés dans le code de l'application –

+0

Qu'est-ce qui fait exactement ça? Essayez-vous d'empêcher les utilisateurs d'accéder au service Web sans l'application frontale? La seule authentification que vous effectuez sur le serveur est-elle basée sur une clé partagée par toutes les copies de l'application? – Aaronaught

+0

Oui , verrouiller le service Web à une application unique (dans ce cas, l'application frontale de mon client) serait un excellent moyen de le faire. Ce que j'essaie de faire est d'empêcher les utilisateurs d'utiliser mes services avec une clé volée dans l'application de mon client. –

Répondre

1

En bref, vous ne pouvez pas le faire efficacement. Vous faites face à un problème similaire à celui de la société de jeux vidéo.

Vous pouvez utiliser une certaine forme d''obfuscation de code', mais c'est une forme de sécurité à travers l'obscurité et vous ne pouvez pas garantir l'efficacité de ceci.

Vous pouvez réduire l'exposition en utilisant différentes clés pour chaque client et, côté serveur, vous assurer qu'une clé ne peut pas être utilisée par un autre client simultanément. C'est essentiellement ce que fait l'industrie du jeu vidéo qui a un réel avantage.

+0

Je ne peux pas contrôler qui utilise l'application. J'ai un client qui utilise mes services dans son application et distribue cette application à ses clients. Donc, le problème est les clients de mon client :( –

0

Cela ne peut pas être fait.

Vous devez soit intégrer les informations d'identification dans l'application (codées en dur ou autre) ou inviter l'utilisateur à les entrer.

Le verrouillage des services Web à une seule application est également inefficace car il peut être facilement découvert et ignoré, tout comme l'intégration des informations d'identification.

Puisque vous ne pouvez pas contrôler les clients ou l'environnement (restreindre l'accès par IP, domaine, etc.), à mon humble avis, vous êtes assez déconné :(

Questions connexes