NTLM en tant que SSO et exécution de certaines actions en tant qu'administrateur avec emprunt d'identité

StackOverflow https://stackoverflow.com/questions/1652160

Question

Je n'arrive pas à trébucher sur la combinaison correcte des paramètres IIS / ASP.NET pour accomplir les tâches suivantes:

  1. Tous les utilisateurs d'un domaine interne doivent pouvoir accéder au site IIS (avec l'authentification NTLM) et l'application ASP.NET doit pouvoir obtenir le nom d'utilisateur de l'utilisateur actuel (<< strong> l'utilisateur est authentifié lui-même ).
  2. L'application ASP.NET en cours d'exécution doit pouvoir exécuter certaines actions sous un compte administrateur . Par exemple, une modification Active Directory ou l'écriture de fichiers dans des emplacements restreints.

Vous pouvez probablement le deviner, mais le but de l'application est de pouvoir laisser "normal" les utilisateurs font spécifique " Administratif " changements via l'application web. Dans le même temps, la modification doit être consignée avec le code " normal " compte d'utilisateur, donc je ne veux pas perdre les informations d'identification de l'utilisateur authentifié.

Recherche des paramètres spécifiques dans IIS6 pour accomplir la tâche 1 (tous les utilisateurs du domaine accèdent au site et s’authentifient eux-mêmes), ainsi que le code de la note 2.

.
Était-ce utile?

La solution

Il existe au moins deux options:

Commun pour les deux:

  • Votre paramètre IIS doit être défini sur l'authentification Windows.
  • L'identité de l'utilisateur peut être lue à partir du httpcontext.

Option 1:

  • Set impersonation = false
  • Définissez l'identité du pool d'applications sur un utilisateur ayant le droit d'apporter des modifications AD
  • Ajoutez l'utilisateur ci-dessus au groupe IIS_WPG

Option 2:

  • Lorsque vous apportez les modifications AD, définissez l'identité du fil sur celle d'un utilisateur autorisé à effectuer les modifications AD

Pour l'option 2, voici un exemple de code utilisant l'emprunt d'identité de l'utilisateur:

http://msdn.microsoft.com /en-us/library/system.security.principal.windowsimpersonationcontext.aspx

Autres conseils

Du point de vue de la sécurité, la meilleure approche serait de séparer toutes les opérations administratives dans son propre service Web qui s’authentifie mais ne se fait pas emprunter. Votre partie normale du site effectuerait les opérations administratives en appelant le service Web, comme n'importe quel autre client, même s'il s'agit d'un appel localhost.

Vous obtenez ainsi une isolation entre le pool d'applications normal (qui emprunte l'identité) et le pool d'applications privilégié (l'administrateur).

Enfin, il s’agit peut-être de séparer les cheveux, mais il devrait s'agir d'une authentification Kerberos, et non de NTLM, car NTLM n'autorise pas délégation contrainte et votre application" normale "doit être activée pour la délégation si elle accède à tout en dehors de l'hôte IIS local.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top