Questions de base sur la configuration d'un site intranet contrôlé par access – ASP .NET

Notez s'il vous plaît:

Je comprends que c'est une question un peu vague. Par conséquent, votre patience est très appréciée.

Demande:

Une idée abstraite de haut niveau d'où commencer car je suis complètement désemparé à ce stade.

Context:

Je suis en train de configurer un site intranet (ASP .NET) où les users de notre groupe d'users locaux (qui sont également ajoutés à notre table d'users) auront access aux applications Web auxquelles ils ont access. Actuellement, je développe à partir de mon PC et en utilisant SQL Server 2005 Express comme database, mais le site final sera hébergé sur un server d'applications avec IIS 6.0 et la database sur une instance de SQL Server 2005. Je suis un nouveau venu .NET C'est une tâche ardue, mais l'expérience vaut un million de dollars.

Détails:

Nous utilisons Windows Athentication pour notre site intranet. Par conséquent, je n'utilise pas les sources de données d'adhésion d'ASP .NET. Plutôt toutes les informations user seront stockées dans deux tables tblEmployee (tous les employés de mon entreprise) et tblUser (tous les users du site intranet).

tblEmployee a des champs – EmployeeID, FirstName, LastName, CostCentre, Rôle, ManagerName, UserID

tblUser a des champs – EmoployeeID, ID user, ApplicationID, AccessLevel, AddedBy, DateAdded

( J'ai mis en place ces tables et je peux les changer à tout moment ).

Ce que je dois accomplir – Quand un user va sur le site intranet, je peux get son nom d'user de domaine. J'ai besoin de vérifier si cet user existe dans tblUser (nom d'user de domaine est identique à UserID dans tblUser). Si l'user existe, nous affichons toutes les applications auxquelles il a access, sinon il affiche une page "pas d'access".

Questions spécifiques

  1. Quelles sont certaines des choses dont j'ai besoin pour "apprendre"? (Comme je l'ai déjà dit, je suis un débutant .NET, mais un apprenti rapide aussi)

  2. J'ai besoin d'utiliser URLAuthorizationModule pour valider une request de page. Comment cacher le nom d'user de l'URL? Je pensais à l'utilisation d'un identifiant de session … mais comment puis-je savoir qui est l'user? Je suis sûr que c'est un moyen de crypter l'UserID, juste ne peut pas le find.

Merci pour vos commentaires. Même le plus petit conseil m'aidera beaucoup.

Vous n'avez besoin d'aucune table ni d'aucune ligne de code. Pour un site intranet, la meilleure option consiste à utiliser l' authentification HTTP Negotiate et à utiliser l'appartenance au groupe Active Directory pour l'autorisation:

  • Créer un groupe de security de domaine pour les users ayant access au site
  • Ajouter les users autorisés à ce groupe
  • Sur votre server IIS, ajoutez le module UrlAuthorizationModule à IIS (à partir des fonctions de programme d'ajout / suppression)
  • Une nouvelle icône "Règles d'autorisation" apparaîtra sur votre site vous permettant de configurer la security de votre site
  • Modifier la security du site pour autoriser uniquement les membres du groupe que vous avez créé précédemment à afficher votre site
  • Prendre plaisir

C'est un paramètre parfait lorsque les pages du site ne se soucient jamais de l'identité de l'user connecté, mais que le site doit être restreint à un set d'users approuvés / autorisés. IIS prendra soin de l'authentification et de l'autorisation et vous pouvez configurer la réponse de la page 403 pour les users non autorisés. L'set du process d'authentification se passe au niveau HTTP, il n'y a pas d''user' à 'crypter' dans l'URL ou quoi que ce soit de ce genre. L'IIS mettra au défi le browser avec un défi d'authentification SPNEGO et tous les browsers sauront comment gérer cela, en répondant par une négociation qui authentifie l' user connecté sur le post de travail qui navigue sur le site (alias l'authentification embeddede). Voir Configuration des règles d'autorisation d'URL dans IIS 7 pour plus de détails.

Vous pouvez arrêter de lire ici si vous n'avez pas besoin d'être confus.

Si vous voulez apprendre tous les détails, notez que ce n'est pas la même chose que le module d'autorisation d'URL ASP.Net que vous findez partout dans le file .config. Voir Différences entre l'autorisation d'URL ASP.NET et l'autorisation d'URL IIS 7.0 .

Si votre code a réellement besoin de l'identité de l'appelant (par exemple à des fins d'audit), vous devez append un module géré qui transmet les informations d'authentification à votre domaine d'application. Ce module est un module géré par UrlAuthorization . Notez que, pour un 1-2 punch parfait de confusion, le module s'appelle UrlAuthorization mais il est implémenté dans le module géré nommé UrlAuthorizationModule, qui n'est pas le même que le vrai module natif UrlAuthorizationModule d'IIS …

Si vous devez emprunter l'identité de l'appelant, les choses deviendront plus complexes, car vous devrez configurer la délégation de confiance. Pour cela, vous configurez ASP.Net Impersonation , puis vous activez la délégation contrainte être en mesure d'atteindre le SQL Server à partir de votre pool d'applications ASP.Net, consultez Comment: utiliser la transition de protocole et la délégation contrainte dans ASP.NET 2.0 (IIS 7.0 est similaire ).

Et enfin, il y a le problème que vous voulez que votre code d'application se comporte différemment en fonction de l'identité de l'appelant (par exemple show admin options) et pour cela la meilleure option est probablement d'utiliser un fournisseur d'appartenance de rôle embedded avec ActiveTool. .