2009-10-06 2 views
2

Pour une application ASP.NET, comment puis-je demander à l'utilisateur son nom d'utilisateur/mot de passe lorsque l'authentification Windows intégrée est utilisée? Je voudrais utiliser C# dans le code derrière les pages pour le faire.Demander des informations de connexion lors de l'utilisation de l'authentification Windows intégrée

Je souhaite que certaines pages (par exemple http://intranet/admin/) vous invitent à entrer un mot de passe, alors que d'autres le font automatiquement (via IWA/NTLM). Je voudrais alors se rappeler que l'utilisateur s'est connecté alors qu'il visite d'autres pages du dossier/site et offre un lien de déconnexion pour quand ils sont terminés. Ce que je veux faire est d'envoyer un 401 état et WWW-Authentification en-têtes à l'utilisateur, afin qu'ils se connectent ensuite en utilisant leur Windows Credentials.

Fondamentalement, comment Firefox/IE le faire si le site n'est pas approuvé.

Éditer 2: SharePoint fait ce genre de chose, où vous vous connectez automatiquement, mais peut se déconnecter et se connecter comme quelqu'un d'autre sans avoir besoin de se déconnecter de Windows.

Edit 3:

Un exemple (autre que SharePoint): Vous êtes connecté en tant que standard (accès limité) Windows/Active Directory sur un site de confiance, qui transmet vos informations d'identification. Vous voulez ensuite vous connecter à une partie admin du site avec des informations d'identification différentes (mais toujours Windows, pas WebForms). La seule autre façon de le faire est de vous déconnecter de Windows, puis de vous reconnecter. Pas pratique si vous avez des fichiers ouverts (que vous souhaitez accéder) ou que l'administrateur ne peut pas se connecter localement (Interactive Login Privilege désactivé). L'emprunt d'identité peut être défini, car la page permet d'accéder à des applications que le compte d'utilisateur ordinaire ne possède pas (par exemple, des bases de données, des fichiers, un administrateur Active Directory).

Fondamentalement, faire une page dans le site se comporter comme si elle ne fait pas partie de la zone Sites de confiance.

Répondre

-1

Pas de code séparé pour cela.

Lorsque l'utilisateur/client ouvrir le par exemple particulier pate., http://intranet/admin/index.aspx

si vous configurez le dossier particulier avec l'authentification Windows, le navigateur

demande automatiquement le nom d'utilisateur et mot de passe de l'utilisateur particulier/client.

donc c'est la configuration que vous devez faire dans IIS dans le dossier particulier

auquel vous souhaitez appliquer les fenêtres authentification intégrée.

+0

Il ne demande pas les informations d'identification si elle est un site de confiance ... dans certains cas, je veux à, même si c'est un site de confiance. – SamWM

+0

Son réinventer la roue - si c'est un des sites de confiance pour l'utilisateur particulier. J'espère que vous avez compris. L'authentification que vous devez ajouter est déjà prise en charge par Windows. – solairaja

+0

Comme je l'ai dit, je veux émuler ce que SharePoint fait - où vous pouvez vous déconnecter et vous connecter en tant qu'utilisateur différent sans vous déconnecter de Windows. Cela utilise l'authentification Windows autant que je sache. – SamWM

1

On dirait que vous devez utiliser l'emprunt d'identité. Cela vous permet de "fonctionner comme" un autre utilisateur Windows. Voir ici: ASP.NET Impersonation

Voici quelques exemples CodeProject:

Windows Impersonation using C#

User Impersonation in .NET

+0

Aimeriez-vous le faire sans passer les informations d'identification en texte clair, mais utiliser l'authentification Digest en quelque sorte .. est-il un façon de définir l'usurpation d'identité asp.net à la volée, plutôt que via web.config? – SamWM

+0

Le lien vers "Usurpation d'identité dans .NET" vous mènera à un exemple de projet qui le fait tout en code. http://www.codeproject.com/KB/dotnet/UserImpersonationInNET.aspx – Jim

+0

Avez-vous regardé ce lien? Aussi, avez-vous déjà compris cela? – Jim

Questions connexes