Simuler un run as

Signaler
Messages postés
38
Date d'inscription
jeudi 3 mai 2007
Statut
Membre
Dernière intervention
18 décembre 2008
-
Messages postés
38
Date d'inscription
jeudi 3 mai 2007
Statut
Membre
Dernière intervention
18 décembre 2008
-
Bonjour

J'ai realise une appli .net c# qui doit se connecter a une base sql. Pour cette connection, un user a ete cree : "sqlUser" qui a les droits necessaires pour se connecter au serveur sql.
Quand je lance visual studio en Run As avec l'utilisateur sqlUser, j'arrive a me connecter au serveur sql avec la chaine de connection "Data Source=servername;Initial Catalog=database;Integrated Security=True;"

quand je lance mon appli en utilisant ma session et en utilisant la chaine de connection

"Data Source=servername;Initial Catalog=database;User Id=sqlUser;Password=pwd;" j'obtiens l'erreur
Login failed for user 'userid'. The user is not associated with a trusted SQL Server connection.

Je sais que l'on peut resoudre ce probleme en modifiant l'Authentication Mode du serveur sql en mixed mode.
Mais est-ce qu'il est possible, quand on fait un SqlConnection.Open(), de faire un genre de Run As pour le sqlUser ?

Merci

Cedric

7 réponses

Messages postés
90
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

En essayant de rajouter Integrated Security=True dans ta chaîne de connection (la deuxième)?
Messages postés
38
Date d'inscription
jeudi 3 mai 2007
Statut
Membre
Dernière intervention
18 décembre 2008

j'ai deja essaye, quand je rajoute Integrated Security=True, la connection n'utilise plus User Id=sqlUser mais mes propres parametres. J'ai alors l'erreur suivante :
Login failed for user 'cedricperes'. parce que je n'ai pas les droits d'acces necessaires (c'est sqlUser qui les a)

Cedric
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
Salut,

Tu peux tenter de faire un impersonate (faits une recherche goole sur impersonate).

Cela permet d'exécuter un bout de code sous un autre user... mais je ne te garantis pas le succès car je sais qu'il y a des problèmes (ilfaut donner des privilèges "dangereux" au process., double hop, config du serveurs, ne fonctionne pas sur toutes les versions windows,... ...).

Voici un lien (en anglais)
http://www.netomatix.com/ImpersonateUser.aspx

yopyop
Messages postés
90
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

Sinon essaie de changer un temps l'utilisateur. Exemple donné par la msdn:

// Create generic identity.
GenericIdentity MyIdentity = new GenericIdentity("MyIdentity");

// Create generic principal.
String[] MyStringArray = {"Manager", "Teller"};
GenericPrincipal MyPrincipal =
new GenericPrincipal(MyIdentity, MyStringArray);

// Attach the principal to the current thread.
// This is not required unless repeated validation must occur,
// other code in your application must validate, or the
// PrincipalPermisson object is used.
Thread.CurrentPrincipal = MyPrincipal;
Messages postés
38
Date d'inscription
jeudi 3 mai 2007
Statut
Membre
Dernière intervention
18 décembre 2008

Merci pour vos reponses. Je n'est pas encore trouver de solution mais je pense que je vais revoir la config de mon serveur. Je vous le signalerai quand j'aurai resolu mon probleme.

Cedric
Messages postés
1
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
1 juin 2007

Bonjour Cédric,

Le problème semble bien venir d'un problème d'authentification entre ton serveur WEB et ton serveur SQL serveur.

Deux liens parlant (je pense de ton problème) et la solution.
http://aspnet101.com/aspnet101/tutorials.aspx?id=23
http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx

Tiens nous au courant.

Anthony
Messages postés
38
Date d'inscription
jeudi 3 mai 2007
Statut
Membre
Dernière intervention
18 décembre 2008

Bonjour
   Le probleme est resolu. On a rajoute dans le web.config :<

identityimpersonate="
true"
/>

On a ensuite cree un utilisateur sql avec lequel on se connecte a la base et ca fonctionne.
Merci pour votre aide.

Cedric