Client-serveur d'authentification à l'aide de SSPI?

Je suis en train de travailler sur une application client-serveur et je veux que le client de s'authentifier auprès du serveur à l'aide de l'utilisateur, les informations d'identification d'ouverture de session, mais je ne veux pas l'utilisateur d'avoir à entrer leur nom d'utilisateur et mot de passe. Certes, je ne veux pas être responsable de la manipulation en toute sécurité des mots de passe. J'ai seulement besoin de l'utilisateur à me prouver qu'ils sont bien qui ils disent qu'ils sont, et puis mon serveur pouvez aller de l'avant et de l'accorder ou de refuser des commandes comme il lui plaît.

Mes utilisateurs font partie d'un domaine, et donc, je veux être en mesure d'utiliser les informations d'identification d'ouverture de session, ils ont créé lors de l'ouverture de session.

Je ne suis pas en utilisant toute sorte de web services, ni ce que je veux. Je contrôle à la fois le client et le logiciel de serveur, et les deux sont écrits en pur C# et utiliser le bon vieux sockets pour obtenir le travail effectué.

Je préfère le faire avec de la pure C#/.Net, mais je suis ouvert à dangereux à l'aide de C# et pinvokes win32 API si cela signifie que je vais faire le travail.

J'ai lu un peu sur SSPI dans windows, mais je suis une sorte de sentiment autour dans l'obscurité puisque ce genre de développement de l'application est nouveau pour moi.

Quelqu'un sait comment faire cela? Est SSPI le chemin? Comment utiliser SSPI à partir de C#? Est-il un .Net-native moyen pour que mon code peut rester portable?

  • Bien avez-vous regardé à l'aide de l'Authentification Windows? Ce type d'authentification utilisera le domaine de l'utilisateur nom d'utilisateur pour valider l'accès au serveur. la chaîne de connexion doit ressembler à quelque chose comme ceci Serveur=myServerAddress;Database=mabase;Trusted_Connection=True;
  • Je ne pense pas qu'il y est une .NET native façon de le faire. Il y a cependant un échantillon à partir de MS montrant comment utiliser SSPI. Elle implique la création d'un managed C++ qui gère SSPI et fournit une interface pour .NET. Pour être franc, je n'étais pas en mesure de l'exécuter sur Windows 8.1 et n'avait pas l'air dans le débogage, mais il peut être une bonne lecture pour vous. msdn.microsoft.com/en-us/library/ms973911.aspx je recommande que vous repenser votre décision sur l'utilisation de la plaine de sockets lorsque vous avez des solutions plus simples dans .NET.
  • Pour clarifier les choses: Comme WCF peut le faire sans l'aide de IIS/ASP.NET, mais la plaine sockets je devrais aussi être en mesure de le faire. La WCF code source (disponible par le biais de la source de référence de la licence) est confus et difficile à suivre.
InformationsquelleAutor antiduh | 2013-06-21