Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

IIS, SQL Server et authentification Windows

5 réponses
Avatar
Laurent
Bonjour,

Je travaille sur un site Intranet pour lequel j'ai besoin de me connecter à
une base de données SQL Server avec l'authentification Windows. J'ai mis en
place la configuration suivante :
- sur IIS : empêche l'accès anonyme au site et activation de
l'authentification Windows intégré
- dans mon web.config :
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
<identity impersonate="true" />
- sur SQL server : déclaration des utilisateurs du domaine comme
utilisateurs ayant accès (lecture et écriture) aux données de ma base

Quand je me connecte à mon site depuis le navigateur du serveur web pas de
problème l'identité de l'utilisateur (du domaine) avec lequel j'ai ouvert ma
session Windows est bien repris et j'accède sans problème à ma base de
données.
Par contre si j'effectue la même manipulation depuis un autre poste sur le
réseau en ayant ouvert ma session windows avec le même utilisateur j'ai
l'erreur suivante :
La tentative de connexion à la base de données a échouée.
System.Data.SqlClient.SqlException: Échec de la connexion de l'utilisateur
'AUTORITE NT\ANONYMOUS LOGON'.
at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
isInTransaction)
at
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction)
at System.Data.SqlClient.SqlConnection.Open()
at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()

Pourtant quand je vérifie la valeur de User.Identity.Name sur une page de
mon site je récupère bien le nom de mon utilisateur. Le problème semble être
au niveau de la délégation d'identité à SQL Server.

Pour info ma config est :
- windows 2000 server ou windows xp pro (j'ai testé avec les deux) pour le
serveur web
- SQL Server 2000 pour le serveur de bdd
- IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur

Merci de votre aide.

Laurent

5 réponses

Avatar
Paul Bacelar
Sans garantie, cela pourrait venir de l'impossibilité pour NTLM de
transférer les identités. Utilisez-vous Kerberos comme protocole
d'authentification sur votre domaine et pas NTML ?

--
Paul Bacelar

"Laurent" wrote in message
news:
Bonjour,

Je travaille sur un site Intranet pour lequel j'ai besoin de me connecter


à
une base de données SQL Server avec l'authentification Windows. J'ai mis


en
place la configuration suivante :
- sur IIS : empêche l'accès anonyme au site et activation de
l'authentification Windows intégré
- dans mon web.config :
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
<identity impersonate="true" />
- sur SQL server : déclaration des utilisateurs du domaine comme
utilisateurs ayant accès (lecture et écriture) aux données de ma base

Quand je me connecte à mon site depuis le navigateur du serveur web pas de
problème l'identité de l'utilisateur (du domaine) avec lequel j'ai ouvert


ma
session Windows est bien repris et j'accède sans problème à ma base de
données.
Par contre si j'effectue la même manipulation depuis un autre poste sur le
réseau en ayant ouvert ma session windows avec le même utilisateur j'ai
l'erreur suivante :
La tentative de connexion à la base de données a échouée.
System.Data.SqlClient.SqlException: Échec de la connexion de


l'utilisateur
'AUTORITE NTANONYMOUS LOGON'.
at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
isInTransaction)
at



System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnec
tionString options, Boolean& isInTransaction)
at System.Data.SqlClient.SqlConnection.Open()
at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()

Pourtant quand je vérifie la valeur de User.Identity.Name sur une page de
mon site je récupère bien le nom de mon utilisateur. Le problème semble


être
au niveau de la délégation d'identité à SQL Server.

Pour info ma config est :
- windows 2000 server ou windows xp pro (j'ai testé avec les deux) pour


le
serveur web
- SQL Server 2000 pour le serveur de bdd
- IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur

Merci de votre aide.

Laurent


Avatar
Laurent
MERCI !!!

Vous venez de me sauver, je ne voyais plus du tout quoi faire.
La solution à mon problème venait bien de Kerberos et après avoir chercher
avec l'aide de mon admin réseau nous avons autoriser la délégation pour le
serveur web et depuis ça fonctionne.

Par contre je ne m'explique pas pourquoi cela fonctionnait depuis le
navigateur de mon serveur web et pas depuis le navigateur d'un autre poste
sur le même domaine.
De même si je forçais dans le web.config l'utilisation d'un compte
particulier (<identity impersonate="true" userName="monUtil"
password="motdepasse"/>) cela fonctionnait.

Auriez-vous pu m'éclairer sur ces deux derniers points svp ? Je voudrais
bien comprendre le fonctionnement.

Encore Merci.

Laurent

"Paul Bacelar" a écrit :

Sans garantie, cela pourrait venir de l'impossibilité pour NTLM de
transférer les identités. Utilisez-vous Kerberos comme protocole
d'authentification sur votre domaine et pas NTML ?

--
Paul Bacelar

"Laurent" wrote in message
news:
> Bonjour,
>
> Je travaille sur un site Intranet pour lequel j'ai besoin de me connecter
à
> une base de données SQL Server avec l'authentification Windows. J'ai mis
en
> place la configuration suivante :
> - sur IIS : empêche l'accès anonyme au site et activation de
> l'authentification Windows intégré
> - dans mon web.config :
> <authentication mode="Windows"/>
> <authorization>
> <deny users="?"/>
> </authorization>
> <identity impersonate="true" />
> - sur SQL server : déclaration des utilisateurs du domaine comme
> utilisateurs ayant accès (lecture et écriture) aux données de ma base
>
> Quand je me connecte à mon site depuis le navigateur du serveur web pas de
> problème l'identité de l'utilisateur (du domaine) avec lequel j'ai ouvert
ma
> session Windows est bien repris et j'accède sans problème à ma base de
> données.
> Par contre si j'effectue la même manipulation depuis un autre poste sur le
> réseau en ayant ouvert ma session windows avec le même utilisateur j'ai
> l'erreur suivante :
> La tentative de connexion à la base de données a échouée.
> System.Data.SqlClient.SqlException: Échec de la connexion de
l'utilisateur
> 'AUTORITE NTANONYMOUS LOGON'.
> at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
> isInTransaction)
> at
>
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnec
tionString options, Boolean& isInTransaction)
> at System.Data.SqlClient.SqlConnection.Open()
> at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()
>
> Pourtant quand je vérifie la valeur de User.Identity.Name sur une page de
> mon site je récupère bien le nom de mon utilisateur. Le problème semble
être
> au niveau de la délégation d'identité à SQL Server.
>
> Pour info ma config est :
> - windows 2000 server ou windows xp pro (j'ai testé avec les deux) pour
le
> serveur web
> - SQL Server 2000 pour le serveur de bdd
> - IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur
>
> Merci de votre aide.
>
> Laurent





Avatar
Paul Bacelar
"Laurent" wrote in message
news:
MERCI !!!

Vous venez de me sauver, je ne voyais plus du tout quoi faire.
La solution à mon problème venait bien de Kerberos et après avoir chercher
avec l'aide de mon admin réseau nous avons autoriser la délégation pour le
serveur web et depuis ça fonctionne.

Par contre je ne m'explique pas pourquoi cela fonctionnait depuis le
navigateur de mon serveur web et pas depuis le navigateur d'un autre poste
sur le même domaine.
De même si je forçais dans le web.config l'utilisation d'un compte
particulier (<identity impersonate="true" userName="monUtil"
password="motdepasse"/>) cela fonctionnait.

Auriez-vous pu m'éclairer sur ces deux derniers points svp ? Je voudrais
bien comprendre le fonctionnement.

Encore Merci.

Laurent




C'est justement grâce à ces bizarreries que j'ai trouvées tout de suite une
voix. Avec une vue d'ensemble du mécanisme de sécurité Kerberos comparé à
NTLM, cela sera beaucoup plus simple:

http://www.microsoft.com/msj/0899/kerberos/kerberos.aspx
http://www.microsoft.com/msj/1199/comsecurity/comsecurity.aspx
http://msdn.microsoft.com/msdnmag/issues/0700/websecure2/
...
Je suis un lecteur assidu de MSJ-MSDNMagazine ;-)

"Paul Bacelar" a écrit :

> Sans garantie, cela pourrait venir de l'impossibilité pour NTLM de
> transférer les identités. Utilisez-vous Kerberos comme protocole
> d'authentification sur votre domaine et pas NTML ?
>
> --
> Paul Bacelar
>
> "Laurent" wrote in message
> news:
> > Bonjour,
> >
> > Je travaille sur un site Intranet pour lequel j'ai besoin de me


connecter
> à
> > une base de données SQL Server avec l'authentification Windows. J'ai


mis
> en
> > place la configuration suivante :
> > - sur IIS : empêche l'accès anonyme au site et activation de
> > l'authentification Windows intégré
> > - dans mon web.config :
> > <authentication mode="Windows"/>
> > <authorization>
> > <deny users="?"/>
> > </authorization>
> > <identity impersonate="true" />
> > - sur SQL server : déclaration des utilisateurs du domaine comme
> > utilisateurs ayant accès (lecture et écriture) aux données de ma base
> >
> > Quand je me connecte à mon site depuis le navigateur du serveur web


pas de
> > problème l'identité de l'utilisateur (du domaine) avec lequel j'ai


ouvert
> ma
> > session Windows est bien repris et j'accède sans problème à ma base de
> > données.
> > Par contre si j'effectue la même manipulation depuis un autre poste


sur le
> > réseau en ayant ouvert ma session windows avec le même utilisateur


j'ai
> > l'erreur suivante :
> > La tentative de connexion à la base de données a échouée.
> > System.Data.SqlClient.SqlException: Échec de la connexion de
> l'utilisateur
> > 'AUTORITE NTANONYMOUS LOGON'.
> > at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
> > isInTransaction)
> > at
> >
>


System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnec
> tionString options, Boolean& isInTransaction)
> > at System.Data.SqlClient.SqlConnection.Open()
> > at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()
> >
> > Pourtant quand je vérifie la valeur de User.Identity.Name sur une page


de
> > mon site je récupère bien le nom de mon utilisateur. Le problème


semble
> être
> > au niveau de la délégation d'identité à SQL Server.
> >
> > Pour info ma config est :
> > - windows 2000 server ou windows xp pro (j'ai testé avec les deux)


pour
> le
> > serveur web
> > - SQL Server 2000 pour le serveur de bdd
> > - IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur
> >
> > Merci de votre aide.
> >
> > Laurent
>
>
>


--
Paul Bacelar
Avatar
Laurent
Merci pour tout

Laurent

"Paul Bacelar" a écrit :

"Laurent" wrote in message
news:
> MERCI !!!
>
> Vous venez de me sauver, je ne voyais plus du tout quoi faire.
> La solution à mon problème venait bien de Kerberos et après avoir chercher
> avec l'aide de mon admin réseau nous avons autoriser la délégation pour le
> serveur web et depuis ça fonctionne.
>
> Par contre je ne m'explique pas pourquoi cela fonctionnait depuis le
> navigateur de mon serveur web et pas depuis le navigateur d'un autre poste
> sur le même domaine.
> De même si je forçais dans le web.config l'utilisation d'un compte
> particulier (<identity impersonate="true" userName="monUtil"
> password="motdepasse"/>) cela fonctionnait.
>
> Auriez-vous pu m'éclairer sur ces deux derniers points svp ? Je voudrais
> bien comprendre le fonctionnement.
>
> Encore Merci.
>
> Laurent
>

C'est justement grâce à ces bizarreries que j'ai trouvées tout de suite une
voix. Avec une vue d'ensemble du mécanisme de sécurité Kerberos comparé à
NTLM, cela sera beaucoup plus simple:

http://www.microsoft.com/msj/0899/kerberos/kerberos.aspx
http://www.microsoft.com/msj/1199/comsecurity/comsecurity.aspx
http://msdn.microsoft.com/msdnmag/issues/0700/websecure2/
....
Je suis un lecteur assidu de MSJ-MSDNMagazine ;-)

> "Paul Bacelar" a écrit :
>
> > Sans garantie, cela pourrait venir de l'impossibilité pour NTLM de
> > transférer les identités. Utilisez-vous Kerberos comme protocole
> > d'authentification sur votre domaine et pas NTML ?
> >
> > --
> > Paul Bacelar
> >
> > "Laurent" wrote in message
> > news:
> > > Bonjour,
> > >
> > > Je travaille sur un site Intranet pour lequel j'ai besoin de me
connecter
> > à
> > > une base de données SQL Server avec l'authentification Windows. J'ai
mis
> > en
> > > place la configuration suivante :
> > > - sur IIS : empêche l'accès anonyme au site et activation de
> > > l'authentification Windows intégré
> > > - dans mon web.config :
> > > <authentication mode="Windows"/>
> > > <authorization>
> > > <deny users="?"/>
> > > </authorization>
> > > <identity impersonate="true" />
> > > - sur SQL server : déclaration des utilisateurs du domaine comme
> > > utilisateurs ayant accès (lecture et écriture) aux données de ma base
> > >
> > > Quand je me connecte à mon site depuis le navigateur du serveur web
pas de
> > > problème l'identité de l'utilisateur (du domaine) avec lequel j'ai
ouvert
> > ma
> > > session Windows est bien repris et j'accède sans problème à ma base de
> > > données.
> > > Par contre si j'effectue la même manipulation depuis un autre poste
sur le
> > > réseau en ayant ouvert ma session windows avec le même utilisateur
j'ai
> > > l'erreur suivante :
> > > La tentative de connexion à la base de données a échouée.
> > > System.Data.SqlClient.SqlException: Échec de la connexion de
> > l'utilisateur
> > > 'AUTORITE NTANONYMOUS LOGON'.
> > > at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
> > > isInTransaction)
> > > at
> > >
> >
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnec
> > tionString options, Boolean& isInTransaction)
> > > at System.Data.SqlClient.SqlConnection.Open()
> > > at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()
> > >
> > > Pourtant quand je vérifie la valeur de User.Identity.Name sur une page
de
> > > mon site je récupère bien le nom de mon utilisateur. Le problème
semble
> > être
> > > au niveau de la délégation d'identité à SQL Server.
> > >
> > > Pour info ma config est :
> > > - windows 2000 server ou windows xp pro (j'ai testé avec les deux)
pour
> > le
> > > serveur web
> > > - SQL Server 2000 pour le serveur de bdd
> > > - IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur
> > >
> > > Merci de votre aide.
> > >
> > > Laurent
> >
> >
> >
--
Paul Bacelar





Avatar
David
Bonjour Laurent,

Je rencontre exactement le même problème que vous.
Comment faire pour m'assurer que Kerberos est bien le protocole utilisé
quand le client IE6 se connecte ? (je suis convaincu que c'est le cas mais au
cas où...)
Comment faire pour autoriser la délégation pour le serveur Web ? J'ai essayé
de modifier une stratégie de sécurité dont le nom me semble proche de ce que
vous indiquez sur mon domaine en autorisant les Utilisateurs du domaine mais
cela ne fonctionne pas.
Votre admin réseau accepterait-il de me détailler ce qu'il convient de faire ?
Merci par avance.


"Laurent" a écrit :

Merci pour tout

Laurent

"Paul Bacelar" a écrit :

> "Laurent" wrote in message
> news:
> > MERCI !!!
> >
> > Vous venez de me sauver, je ne voyais plus du tout quoi faire.
> > La solution à mon problème venait bien de Kerberos et après avoir chercher
> > avec l'aide de mon admin réseau nous avons autoriser la délégation pour le
> > serveur web et depuis ça fonctionne.
> >
> > Par contre je ne m'explique pas pourquoi cela fonctionnait depuis le
> > navigateur de mon serveur web et pas depuis le navigateur d'un autre poste
> > sur le même domaine.
> > De même si je forçais dans le web.config l'utilisation d'un compte
> > particulier (<identity impersonate="true" userName="monUtil"
> > password="motdepasse"/>) cela fonctionnait.
> >
> > Auriez-vous pu m'éclairer sur ces deux derniers points svp ? Je voudrais
> > bien comprendre le fonctionnement.
> >
> > Encore Merci.
> >
> > Laurent
> >
>
> C'est justement grâce à ces bizarreries que j'ai trouvées tout de suite une
> voix. Avec une vue d'ensemble du mécanisme de sécurité Kerberos comparé à
> NTLM, cela sera beaucoup plus simple:
>
> http://www.microsoft.com/msj/0899/kerberos/kerberos.aspx
> http://www.microsoft.com/msj/1199/comsecurity/comsecurity.aspx
> http://msdn.microsoft.com/msdnmag/issues/0700/websecure2/
> ....
> Je suis un lecteur assidu de MSJ-MSDNMagazine ;-)
>
> > "Paul Bacelar" a écrit :
> >
> > > Sans garantie, cela pourrait venir de l'impossibilité pour NTLM de
> > > transférer les identités. Utilisez-vous Kerberos comme protocole
> > > d'authentification sur votre domaine et pas NTML ?
> > >
> > > --
> > > Paul Bacelar
> > >
> > > "Laurent" wrote in message
> > > news:
> > > > Bonjour,
> > > >
> > > > Je travaille sur un site Intranet pour lequel j'ai besoin de me
> connecter
> > > à
> > > > une base de données SQL Server avec l'authentification Windows. J'ai
> mis
> > > en
> > > > place la configuration suivante :
> > > > - sur IIS : empêche l'accès anonyme au site et activation de
> > > > l'authentification Windows intégré
> > > > - dans mon web.config :
> > > > <authentication mode="Windows"/>
> > > > <authorization>
> > > > <deny users="?"/>
> > > > </authorization>
> > > > <identity impersonate="true" />
> > > > - sur SQL server : déclaration des utilisateurs du domaine comme
> > > > utilisateurs ayant accès (lecture et écriture) aux données de ma base
> > > >
> > > > Quand je me connecte à mon site depuis le navigateur du serveur web
> pas de
> > > > problème l'identité de l'utilisateur (du domaine) avec lequel j'ai
> ouvert
> > > ma
> > > > session Windows est bien repris et j'accède sans problème à ma base de
> > > > données.
> > > > Par contre si j'effectue la même manipulation depuis un autre poste
> sur le
> > > > réseau en ayant ouvert ma session windows avec le même utilisateur
> j'ai
> > > > l'erreur suivante :
> > > > La tentative de connexion à la base de données a échouée.
> > > > System.Data.SqlClient.SqlException: Échec de la connexion de
> > > l'utilisateur
> > > > 'AUTORITE NTANONYMOUS LOGON'.
> > > > at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean&
> > > > isInTransaction)
> > > > at
> > > >
> > >
> System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnec
> > > tionString options, Boolean& isInTransaction)
> > > > at System.Data.SqlClient.SqlConnection.Open()
> > > > at Accept.Application.Cad.Fabrique.Connexion.OuvrirConnexion()
> > > >
> > > > Pourtant quand je vérifie la valeur de User.Identity.Name sur une page
> de
> > > > mon site je récupère bien le nom de mon utilisateur. Le problème
> semble
> > > être
> > > > au niveau de la délégation d'identité à SQL Server.
> > > >
> > > > Pour info ma config est :
> > > > - windows 2000 server ou windows xp pro (j'ai testé avec les deux)
> pour
> > > le
> > > > serveur web
> > > > - SQL Server 2000 pour le serveur de bdd
> > > > - IE 5.0 ou IE 6.0 (les deux ont été testé) pour le navigateur
> > > >
> > > > Merci de votre aide.
> > > >
> > > > Laurent
> > >
> > >
> > >
> --
> Paul Bacelar
>
>
>