1

j'ai vu des questions similaires, mais aucun d'entre eux vraiment abordé ma situation, voici la configuration:Winforms app « mode déconnecté » de l'application web

J'ai une application ASP.NET avec l'authentification par formulaire (SqlMembershipProvider) où les utilisateurs peuvent soumettre des résultats d'audit.

Je souhaite créer une application de bureau légère (appelons-la MyApp) (à utiliser hors connexion) afin que les utilisateurs puissent soumettre des résultats d'audit lorsqu'ils n'ont pas de connexion Internet.

Voici les Incontournables:

  1. Authentifier l'utilisateur contre mon SqlMembershipProvider (utilisateurs anonymes ne peuvent pas présenter les résultats de la vérification)
  2. uniquement demander à l'utilisateur des informations d'identification une fois (quand il/elle ouvre MyApp) (Je vais avoir la possibilité d'enregistrer le jeton d'authentification, mais dans certains cas MyApp sera installé sur un ordinateur portable qui est utilisé par plusieurs utilisateurs, par conséquent je vais devoir forcer les utilisateurs à se connecter à chaque fois est ouvert)
  3. Ne pas stocker le mot de passe en texte brut (si l'utilisateur est déconnecté lorsque MyApp est ouvert, je veux sauver les informations d'identification pour authentifier l'utilisateur chaque fois que la connexion est disponible) - pas sûr si cela est possible

Une fois que j'ai compris les 3 choses ci-dessus, le reste est facile.

Voici un scénario simple en cas ce qui précède est source de confusion:

  1. MyApp est installé sur l'ordinateur portable de bureau, que les gens prennent le long quand ils voyagent
  2. 2 utilisateurs se rendent à la zone à distance (pas d'internet), et mener 2 audits distincts
  3. L'utilisateur 1 ouvre MyApp, fournit son utilisateur/passe (voir # 2 dans MUST-HAVES), soumet 3 résultats (je vais enregistrer les résultats avec les informations d'identification de l'utilisateur pour authentifier l'utilisateur et soumettre les résultats chaque fois que la connexion devient disponible) - voir # 1 et # 3 dans MUST-H AVES
  4. utilisateur 2 ouvre MyApp, et fait la même routine que l'utilisateur 1 fait à l'étape 3.
  5. 2 jours plus tard, ils reviennent au bureau, Internet est disponible, les résultats des étapes 3 et 4 sont soumis à mon web -app au nom des utilisateurs respectifs

J'ai regardé dans le cadre de Microsoft Sync, mais cela a semblé être une exagération pour ce que je fais (et je ne suis pas sûr que cela puisse accommoder mes MUST-HAVES soit).

Je suis ouvert à toutes les approches alternatives tant qu'elles représenteraient mes MUST-HAVES.

Nous vous remercions de votre aide.

+0

Je ne comprends pas très bien ce qui est difficile ici. Sur quoi êtes-vous collé? Vous pouvez juste le faire vous-même; MyApp dispose d'une base de données locale qui publie ensuite les modifications apportées à la base de données en temps réel lorsqu'Internet est disponible. –

+0

@Noon Silk: Je suppose que j'aurais dû mentionner que je n'ai aucune expérience avec les applications de bureau. Ce qui est difficile, c'est d'accommoder mes MUST-HAVES, si vous connaissez un moyen simple de faire travailler les 3 - merci de partager. –

Répondre

0

Il y a un problème difficile caché ici. Le cas d'utilisation de plusieurs utilisateurs saisissant des rapports sur le même ordinateur portable suggère que les utilisateurs doivent s'authentifier avant d'entrer un rapport d'audit, par opposition à l'authentification lorsqu'ils soumettent le rapport d'audit une fois l'application rebranchée.

L'authentification devrait indiquer aux utilisateurs si les informations d'identification qu'ils ont entrées étaient correctes ou non, vous devez donc synchroniser la base de données d'informations d'identification de l'utilisateur sur l'ordinateur portable. C'est un risque de sécurité important et doit être fait très soigneusement, même si la base de données utilisateur est cryptée et utilise des mots de passe hachés et salés. Vous souhaitez probablement uniquement synchroniser un sous-ensemble d'enregistrements d'utilisateurs, par exemple ceux qui utiliseront l'application. Supposons que vous le fassiez. Vous pouvez alors utiliser le même fournisseur d'authentification que celui utilisé pour l'application ASP.NET pour authentifier les utilisateurs et resynchroniser cette base de données lorsque l'application est connectée. Vous n'avez pas besoin de stocker leurs informations d'identification autrement que dans la base de données, qui, comme je l'ai mentionné devrait être crypté en utilisant les fenêtres data protection API ou quelque chose de similaire fort. Tout cela pourrait être simplifié si vous pouviez contourner la condition en permettant aux utilisateurs d'associer les rapports à leur compte en tapant simplement un nom d'utilisateur, en téléchargeant (mais sans soumettre) les rapports quand ils se reconnectent, et en exigeant que les utilisateurs se connectent via le site Web et confirment le rapport téléchargé après s'être authentifié normalement.