0

Voici la situation. Je travaille sur le développement d'un nouveau site web pour accéder à une ancienne base de données. C'est une installation DoD donc il y a beaucoup de sécurité autour.Comment faire pour que ASPNET soit reconnu comme une connexion sécurisée par SQL Server 2005

L'application actuelle est écrite en ASP classique, VBScript et du javascript. Les nouveaux systèmes sont ASP.NET.

Accéder à la base de données dans l'ancien système signifiait que vous utilisiez le serveur avec vos propres informations d'identification (nom de domaine \ nom d'utilisateur). Maintenant, j'essaie de tester certains des premiers développements que j'ai faits. Lorsque j'ai utilisé Cassini (sous VS2008), je n'avais aucun problème à accéder à la base de données car notre domaine \ myusername était enregistré avec l'instance SQL Server en tant que connexion sécurisée. En raison des aspects de sécurité que je dois écrire, Cassini ne peut plus servir de serveur de test - je dois utiliser IIS (nous avons ici des lecteurs de cartes de sécurité). Cassini ne peut pas les gérer. Donc, quand j'ai rencontré tous les problèmes d'avoir ajouté les comptes appropriés aux administrateurs sur mon PC local pour pouvoir déboguer dans VS2008 en utilisant IIS, j'ai essayé de me connecter à la base de données et j'ai été rejeté car MYPC \ ASPNET n'était pas une connexion de confiance.

La modification de la base de données existante est hors de question. Les noms d'utilisateur et mots de passe codés en dur pour l'accès à la base de données sont hors de question.

J'ai demandé au DBA s'il pouvait ajouter MYPC \ ASPNET aux groupes de domaine afin que SQL Server puisse le voir comme une connexion approuvée (puisque MYDOMAIN \ MYNAME faisait partie d'un groupe considéré comme une connexion approuvée). Il me dit que ce n'est pas techniquement possible. Au final, il y aura trois ou quatre machines (la mienne, un autre développeur, l'éventuel serveur web en direct et un futur serveur web de test) dont les comptes ASPNET vont toucher nos deux serveurs SQL (live et test).

Que dois-je faire pour que le serveur SQL existant me considère comme ami et non ennemi? J'ai regardé l'usurpation d'identité mais j'ai l'impression qu'elle n'est pas compatible avec notre système - les règles métier appellent une routine commune pour créer un objet SqlConnection et l'ouvrir (peut-être même un objet SqlTransaction) et cet objet est utilisé pour le reste des règles métier et la couche d'accès aux données jusqu'à ce que cela soit fait. Il ne semblait pas que l'usurpation d'identité persisterait une fois le SqlConnection ouvert (et passé, ByRef à la routine d'appel)

Merci d'avance pour tout conseil.

Répondre

0

Sons comme vous voulez usurper l'identité du client qui accède à votre site Web correct? Avez-vous essayé d'utiliser l'usurpation d'identité ou pensez-vous que cela ne fonctionnera pas?

Modifier

Comme le souligne Albert out, l'usurpation d'identité, l'utilisateur doit être authentifié en utilisant l'authentification Windows. Vous souhaiterez désactiver l'accès anonyme et activer l'authentification Windows dans l'outil de gestion IIS.

+0

Dans ce que j'ai lu jusqu'à présent dans les pages MSDN sur l'emprunt d'identité, je n'ai pas encore trouvé de réponse. Je mets un "" dans le web.config et l'erreur dit maintenant que l'utilisateur "(null)" n'est pas une connexion de confiance. Progrès, mais pas encore une réponse complète. – David

+0

Cela se produit parce que vous avez autorisé les utilisateurs anonymes. Vous devez autoriser uniquement Windows Authentiacation dans IIS config – Albert

+0

Finalement, je dois autoriser l'accès anonyme car nous avons des utilisateurs non seulement dans notre domaine local mais venant d'un «site portail» - malheureusement, je ne sais pas grand-chose sur ce que l'information va être disponible pour moi dans les contextes de ces utilisateurs. – David

1

Vous avez deux options:

  1. exécuter votre application web dans un pool d'applications configuré pour fonctionner dans le contexte d'un compte de domaine
  2. Utilisez usurpation d'identité et configurer votre application Web pour utiliser l'authentification Windows uniquement
+0

# 1 n'est pas une option. # 2 est un mystère jusqu'à présent et j'espère que la réponse est dans Impersonation quelque part. – David

+0

Pourquoi le numéro un n'est pas une option? Basé sur votre description c'est la meilleure option. – Albert

+0

Je suis dans une installation DoD et ne dispose pas des informations d'identification ni de la bande rouge pour accéder à la route du pool d'applications. – David

0

Comme cela a déjà été suggéré, vous devriez utiliser l'usurpation d'identité.

Toutefois, si votre SQL Server s'exécute sur une machine différente de votre serveur Web, l'emprunt d'identité ne suffira pas car les informations d'identification de l'utilisateur ne seront pas déléguées à SQL Server (saut de serveur). Dans ce cas, vous devrez soit activer la délégation dans l'AD ou créer une connexion non-Windows sur votre serveur SQL et l'utiliser à la place (cela ne fonctionnera pas si votre serveur SQL utilise la connexion Windows pour le contrôle d'accès aux tables etc.) .

+0

C'est * exactement * le problème. Le serveur Web, même en production, sera toujours différent du serveur SQL. Mais la création de connexions SQL Server introduit des problèmes de sécurité - comme dans où/comment stocker le nom d'utilisateur/passowrd à coller dans la chaîne de connexion? – David

+0

Il existe des moyens de sécuriser les informations d'identification dans les chaînes de connexion (http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx) mais je ne suis pas sûr que ce soit votre meilleure option. – Albert

+0

Autoriser la délégation sur certains comptes pose également un problème de sécurité. Je ne suis pas sûr de ce qui est la meilleure solution, mais le chiffrement des parties du fichier web.config est certainement le plus facile. –

Questions connexes