J'ai développé une application MVC, qui, aux fins de cette seule question a un contrôleur:En utilisant une API MVC avec l'authentification Windows à partir de VBA
Public Function GetValue()
Return User.Identity.Name
End Function
L'application doit être utilisé sur un réseau Intranet, donc, je l'ai mis à « l'authentification Windows »
Le but est d'interroger cette application, par VBA.
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
With objHTTP
.Open "GET", URL, False
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.setRequestHeader "Content-type", "application/json"
.setRequestHeader "data-type", "json"
.send
.WaitForResponse
sResult = .ResponseText
End With
Debug.Print (sResult)
Si je lance l'application localement (. Par exemple débogage sur l'ordinateur qui exécute Excel), il fonctionne grâce à Chrome (accès à localhost: xxxxx/api/name retourne un fichier xml avec mon nom d'utilisateur ActiveDirectory).
Les travaux de routine VBA bien ainsi, et la fenêtre de sortie affiche le code XML que je reçois dans Chrome.
Maintenant, si je publie le projet sur le serveur IIS, il fonctionne toujours via Chrome (l'accès à myserver/api/nom renvoie un fichier xml avec mon nom d'utilisateur ActiveDirectory). Cependant, quand je lance le module VBA, il renvoie une erreur 401:
Error:401 - Unauthorized: Access is denied due to invalid credentials.
Le fait que cela fonctionne dans les navigateurs me porte à croire que la configuration côté serveur est OK, et que je dois modifier quelque chose dans mon VBA.
Je dois admettre que je suis un peu désemparés à ce point ... Merci pour tout vous conduit peut me donner :)
vous devez utiliser la bibliothèque 'WinHTTPRequest.5.1', cela vous permettra d'ajuster les paramètres d'authentification vous permettant de vous connecter – SWa