2010-09-17 4 views
6

J'ai toujours lu que l'utilisateur défini dans le site Web IIS/répertoire virtuel est l'utilisateur qui exécute l'application (identité utilisateur anonyme)quel utilisateur exécute mon utilisateur asp.net?

Mais dans le pool d'applications, je peux également définir un utilisateur (modèle de processus , identité)

Quelle est la différence entre les deux, et laquelle devra-t-on avoir accès si je fais un fichier lu?

EDIT:

la générosité est pour cette quesyion mais si je l'utilise « l'authentification anonyme », est l'utilisateur je choisis dans la « identité de l'utilisateur anonyme » jamais utilisé? - 'publié comme commentaire

Répondre

2

Pensez l'identité d'un site Web en règle qui définit qui peut accéder au site. Si vous spécifiez un compte anonyme à utiliser, ce compte doit avoir accès au site. Si l'accès anonyme est désactivé, les informations d'identification de l'utilisateur doivent avoir accès au dossier.

L'identité de pool d'application définit ce que l'application peut faire. Le processus de travail du pool d'applications s'exécutera à l'aide de l'identité du pool d'applications. ce compte doit avoir accès à toutes les ressources (SQL Server, partages de fichiers, etc.) auxquelles l'application devra accéder.

Pour répondre à cette question: Oui, le compte anonyme est utilisé. Pensez au scénario dans lequel vous hébergez une centaine de sites Web, et vous ne voulez pas que les fichiers d'un client puissent accéder à ceux d'un autre. Vous devez attribuer un accès anonyme distinct à chaque client.Le compte anonyme de chaque site permet à IIS d'accéder uniquement aux fichiers relatifs à ce site particulier (à condition que vous ayez correctement configuré l'accès à ce compte).

4

Commander this post. Quote:

Les deux comptes sont des choses différentes. Pensez à l'identité du site représentant l'utilisateur du site. Si vous créez un nouveau site Web, ce compte est le compte IIS anonyme. Si vous désactiver « l'authentification anonyme », vos utilisateurs devront authentifier contre le site (dans un site de domaine intranet /Windows ce pourrait être Implicite en utilisant le réseau des informations d'identification.)

L'identité du pool d'applications est le compte Windows nécessaire pour exécuter vos assemblys. En règle générale, il s'agit du compte "Service réseau" , qui est un compte à privilèges privilégiés avec des droits d'utilisateur et des autorisations limités sur . Il a ont des informations d'identification réseau. Cela signifie que vous pouvez utiliser pour authentifier par rapport aux ressources réseau d'un domaine. Vous pouvez également l'utiliser pour accéder à une base de données SQL Server avec sécurité intégrée .

Par exemple, si votre application ASP.NET doit écrire dans un dossier, vous devez accorder l'autorisation à l'application compte de la piscine, pas le compte du site. Pour plus d'informations sur sur le pool d'applications , lisez ici.

+0

Great! Encore une question cependant: quand l'utilisateur du site est-il utilisé? La citation indique l'identité du pool d'applications utilisée pour l'accès aux fichiers et le serveur SQL, mais quand l'utilisateur du site Web est-il utilisé pour l'authentification? – Michel

+0

@Michel, considérez-le comme le mécanisme que vous décidez d'utiliser pour authentifier les utilisateurs. Si vous laissez l'authentification anonyme, n'importe qui peut accéder à votre site, si vous activez l'authentification de base, un utilisateur devra fournir des informations d'identification pour accéder au site. –

+0

mais si j'utilise 'authentification anonyme', est-ce que l'utilisateur que je choisis dans l''identité d'utilisateur anonyme' est déjà utilisé? – Michel

0

@Michel

si vous avez une configuration Anon compte d'accès sur votre site (dir virtuel)

ET vous avez

<system.web> 
    <identity impersonate="true" /> 
</system.web> 

dans votre web.config, cela utilisera cette identité .

si vous avez une partie de code où vous pouvez définir les informations d'identification

CredentialCache.DefaultCredentials

pointera le compte Anon, si vous voulez tester ce que l'utilisateur que vous utilisez essayer

Thread.CurrentPrincipal.Identity.Name.ToString() 

un coup d'oeil à ce poste pour plus d'informations
http://blogs.iis.net/sakyad/archive/2008/11/19/process-and-thread-identity-in-asp-net-a-practical-approach.aspx