# Systmes > Windows > IIS > [IIS 7.5] Type d'authentification IIS pour se connecter en utilisateur Active Directory

## baptx

Bonjour  tous,

Je cherche depuis dj un petit moment une solution  mon problme mais j'avoue que je suis perdu. Je vais donc vous expliquer le contexte de mon application et ensuite ce que je souhaite faire, en esprant que quelqu'un saura m'aider.

Dans le but de me connecter  un cube sur SQL Server Analysis Services (SSAS), j'utilise la dll fournie par Microsoft : msmdpump.dll (plus d'infos ici). Pour le moment, la connexion est en mode Anonyme, et donc quand l'utilisateur se connecte  la DLL, IIS utilise l'utilisateur autoris  se connecter  SSAS.

Maintenant, j'aimerai faire un site web qui utilise un plug-in pour naviguer de faon graphique dans le cube, en l'occurrence Flexmonster.

Mon problme est le suivant : Une fois que le site web sera publi, n'importe quel utilisateur qui se connectera aura accs au cube. Je pourrai rajouter une couche de connexion avant l'accs au cube, mais du coup n'importe qui utilisant un sniffer de requte HTTP trouvera l'url de connection au cube en clair. Et aura donc accs au cube de faon anonyme.

La solution serait donc d'activer l'authentification directement sous IIS. L'utilisateur se connectant au site rentrerait ses informations Active Directory, et IIS excuterait la DLL sous ce compte. Comme ce compte aura accs  MSAS, alors il se connectera au cube.

J'ai lu sur les docs Microsoft que pour se connecter  Active Directory, il fallait utiliser l'identification Windows avec NTLM. Mais il y a aussi crit que pour un usage Internet, cela n'tait pas recommand et qu'il fallait notamment que le client et le serveur soient sur le mme domaine, ce qui n'est pas le cas ici.

J'ai aussi trouv un article sur l'impersonnalisation, mais cela ne permet pas de rsoudre mon problme car le site sera toujours excut sous un seul utilisateur autoris.

Je recherche donc un moyen,  partir d'un site web, de s'identifier en rentrant un login / pass. Ce login / pass sera envoy  IIS qui ira vrifier dans Active Directory si cet utilisateur est reconnu. Si c'est le cas, alors l'instance du site web sera excute sous cet utilisateur et il pourra se connecter  la dll.

Si quelqu'un a dj eu affaire  ce cas de figure, je suis preneur.

N'hsitez pas  renommer ce topic si le titre n'est pas clair, ou  le dplacer dans une autre rubrique le cas chant.

Merci beaucoup de votre aide.

----------


## juno107

Je pense que la plus fiable des solutions serait d'installer un certificat pour accder  ce module; oui, je sais, c'est lourd mais quoi de plus pratique pour un utilisateur d'accder  du contenu protg depuis le web?

----------


## Michal

Bonjour



> J'ai lu sur les docs Microsoft que pour se connecter  Active Directory, il fallait utiliser l'identification Windows avec NTLM. Mais il y a aussi crit que pour un usage Internet, cela n'tait pas recommand et qu'il fallait notamment que le client et le serveur soient sur le mme domaine, ce qui n'est pas le cas ici.


En utilisant NTLM :
En fait, techniquement, tu n'es pas oblig d'avoir le client et le serveur dans le mme domaine AD. Il suffit de connaitre un login de l'AD et c'est bon  ::):  En revanche, c'est la scurit qui en prend un coup : je me connecte sur un pc lambda (non contrl par l'IT de ton entreprise) donc tu vas pas savoir dans quel tat est ce poste. Ca se trouve, il est vrol jusqu' la moelle (ou quelqu'un de mal intentionn est dessus) et va donc pourrir ton appli/rseau. Evidemment, le mme principe s'applique  un poste de ton rseau mais il y a normalement moins de chances qu'il reprsente un danger. NTLM est attaquable selon la version de l'OS utilis donc a peut reprsenter un problme de scurit aussi.

En utilisant kerberos :
L il faut que le poste soit dans le domaine (mais pas forcment dans le mme rseau, en vpn a passe). Kerberos est trs sensible  l'heure : il ne faut pas plus de 5 minutes d'cart entre le serveur et le client sinon plus rien ne marche. C'est plus scuris mais pas utilisable sur un pc lambda.





> Je recherche donc un moyen,  partir d'un site web, de s'identifier en rentrant un login / pass. Ce login / pass sera envoy  IIS qui ira vrifier dans Active Directory si cet utilisateur est reconnu. Si c'est le cas, alors l'instance du site web sera excute sous cet utilisateur et il pourra se connecter  la dll.


Ce qu'il te faut, c'est en ralit ADFS (Active Directory Federation Services). Il s'agit d'un serveur qui va faire l'interface entre une source d'authentification (ad interne notamment) et ton serveur IIS. L'ide, c'est :
- Tu te connectes sur IIS sans tre identifi
- IIS n'a pas reu de ticket d'authentification : tu es redirig vers ADFS
- Tu t'authentifies avec ton login sur ADFS : il va te filer un ticket d'authentification. A partir de ce moment, tes identifiants ne seront plus transmis sur le rseau.
 - Tu es redirig automatiquement vers IIS : il voit le ticket d'authentification et va le valider. Une fois que c'est fait, tu as accs aux ressources. Lors d'un changement de page (selon la config de IIS), le ticket sera reprsent  IIS et tu seras authentifi directement (sans  transfrer ton mot de passe encore une fois sur le rseau). 

La mise en place d'ADFS (v2) est pas forcment vidente : il faut prendre le temps de bien lire technet. L'avantage d'ADFS, c'est que tu pourras fdrer (c'est sa fonction premire  ::aie:: ) d'autres sources d'authentification. Par exemple, tu pourras fdrer l'AD d'un client qui veut accder  tes ressources. Le client se connectera avec ses identifiants de son rseau et sera authentifi chez toi  condition bien sr d'tablir des relations de confiance entre vos serveurs  ::): 

Ah oui, j'allais oublier : il faut utiliser https avant mme de commencer  toucher  l'authentification ! On protge d'abord les communications puis la session utilisateur  ::):

----------

