2009-08-04 5 views
0

Actuellement, pour exécuter windowsservice en tant qu'utilisateur fixe, nous définissons les propriétés de connexion sur le service Windows (où nous spécifions le nom d'utilisateur et le mot de passe à utiliser).usurpation d'identité pour le service Windows à l'aide du fichier de configuration

mais je suis prêt à avoir cette fonctionnalité d'exécution du service Windows en tant qu'utilisateur fixe comme usurpation d'identité dans l'application web mentionnée dans le fichier de configuration.

veuillez jeter votre avis sur ce point, est-ce une approche pratique façon simple de mettre en œuvre cela.

Répondre

0

Votre deuxième alinéa n'a pas de sens ...

Si je comprends ce que je pense que vous demandez, il est préférable de spécifier le compte d'utilisateur que vous souhaitez exécuter un service en utilisant l'onglet d'ouverture de session sur la boîte de dialogue des propriétés du service.

+0

Martin, au lieu de spécifier le compte dans la boîte de dialogue des propriétés, est-il possible de les mentionner dans app.config et utiliser ce compte pour exécutez le service en tant que. –

+0

Je ne sais pas du haut de ma tête j'ai peur. Cependant, cette approche nécessite de mettre un mot de passe dans le fichier app.config. Je ne vois pas ce que cela va réellement faire pour vous en utilisant l'onglet de connexion (sauf créer un trou de sécurité) – MPritchard

1

Oui, vous pouvez utiliser WindowsIdentity.Impersonate pour emprunter l'identité d'un utilisateur. Mais, ce serait une très mauvaise idée de faire ce que vous suggérez. Vous devez trouver un moyen sécurisé pour stocker les informations d'identification de l'utilisateur dans votre app.config (DPAPI maybe).

0

Non, la session du service est ouverte avant le chargement de l'exécutable. Le seul moyen de spécifier le compte sous lequel le service s'exécute est le nom d'utilisateur et le mot de passe du service.

Vous pouvez toutefois utiliser LogonUser et WindowsIdentity.Impersonate pour qu'un thread de votre service s'exécute en tant qu'utilisateur particulier. Comme le dit JP, bien qu'il doit être stocké de manière sécurisée - en utilisant le cryptage et probablement dans un emplacement sécurisé dans le registre plutôt que dans le fichier app.config.

Vous pouvez également usurper l'identité d'un client en utilisant WCF ou un AuthenticatedStream, etc.

Questions connexes