2009-07-23 8 views
0

J'ai un projet client/serveur, communiquant avec WCF (Named Pipes pour l'instant, mais cela peut changer - mais je ne peux pas utiliser IIS). Ce projet est intégré à Active Directory.Authentification Windows, autorisations personnalisées, WCF, Active Directory

Ce programme est conçu pour donner aux utilisateurs des autorisations qui normalement n'ont pas d'autorisations, en agissant comme une sorte de proxy. L'utilisateur utilise le client pour "demander" une tâche à effectuer. Le serveur effectue ensuite la tâche pour le client, tant que certains critères sont remplis.

L'un de ces critères est que l'utilisateur est autorisé à demander cette tâche. J'ai besoin d'un moyen pour mon service WCF de garantir l'identité de l'utilisateur, de le comparer à une base de données et d'effectuer la tâche ou de refuser la tâche. Comment utiliser l'authentification Windows pour garantir à 100% que l'utilisateur est ce qu'il prétend être?

Merci à l'avance,

Mike

Répondre

0

Le only allowed type of authentication pour les canaux nommés est l'authentification Windows (faites défiler jusqu'à NetNamedPipeBinding). Vous pouvez faire la impersonation declareatively par exemple ...

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public string GetData(int value) 
{ 
    return string.Format("Hi, {0}, you have entered: {1}", 
          WindowsIdentity.GetCurrent().Name, value); 
} 

Une fois que vous avez l'identité, vous savez que Windows a correctement authentifié cet utilisateur et vous pouvez vérifier que l'identité contre ce que vous avez dans votre DB.

+0

Le code d'usurpation d'identité est-il requis? J'ai réellement besoin d'effectuer la tâche en tant qu'utilisateur complètement différent de celui demandé. Juste besoin de vérifier leurs informations d'identification contre ma base de données avant de continuer. Est-ce que cela ferait ça? –

+0

Vous avez seulement besoin de l'usurpation d'identité pour obtenir l'identité de l'appelant. Si vous obtenez l'identité Windows actuelle sans emprunter l'identité, vous obtiendrez l'identité du compte sous lequel le service est en cours d'exécution. Vous avez seulement besoin de vérifier, d'obtenir le nom et de renvoyer le nom de votre méthode. Vous n'avez pas à faire le travail dans la méthode qui imite l'appelant (en fait, c'est ce que vous ne voulez pas faire). –

Questions connexes