Aujourd'hui, j'ai implémenté un fournisseur d'authentification personnalisé pour mon service WCF. Il est capable de déterminer si mon utilisateur est valide ou non, comme prévu.Récupération de l'utilisateur actuellement authentifié dans un service WCF
Donc, maintenant j'ai cette classe:
public class MyCustomValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
User apiUser = User.Login(userName, password);
// other logic goes here.
}
}
Le comportement de ma demande dépend de quels objets l'utilisateur peut accéder. Alors, comment puis-je obtenir mon objet Utilisateur d'ici à ma classe de service? Il n'y a pas de moyen immédiatement évident que je peux voir, car ma classe de service n'hérite pas de n'importe quoi par défaut, contrairement aux contrôleurs ASP.NET. Mon premier instinct est de configurer un paramètre statique dans MyCustomValidator, puis de le lire à partir de là, mais je suspecte qu'une condition de concurrence puisse se produire. Quelqu'un peut-il confirmer ou infirmer mes soupçons? Et le plus important: Y at-il une meilleure façon de le faire? C'est la première fois que j'utilise la WCF, donc je ne suis pas au courant des meilleures pratiques impliquées ici.
Nous vous remercions de votre temps.
Votre validateur est certainement mal car il nécessite un accès au mot de passe en texte clair de l'utilisateur. La grande majorité des schémas d'authentification (Digest, NTLM, Kerberos, OAuth) ne passent jamais le mot de passe en clair, ils établissent la propriété du mot de passe via des défis et des réponses de digestion (ie via des hachages). –