Utiliser VBA pour télécharger un fichier à partir d’un site Web disposant d’une authentification SAML

Je voudrais créer un plug-in Excel vba capable de télécharger un fichier Excel depuis un site intranet qui est actuellement protégé par une authentification SAML.

Si j’essaye de télécharger le fichier avec Internet Explorer ou Google Chrome, le fichier commence automatiquement à télécharger sans mettre aucun identifiant et je pense que c’est parce qu’il existe une sorte d’authentification Windows intégrée sur laquelle les navigateurs s’appuient.

Si j’essaie de télécharger avec un object VBA tel que winhttp.winhttprequest.5.1, je reçois une page HTML qui, je pense, lance l’authentification SAML (je suppose donc que l’object winhttp.winhttprequest.5.1 que j’ai utilisé ne supporte pas l’authentification SAML ).

Existe-t-il un moyen simple d’effectuer une authentification SAML avec VBA ou dois-je coder manuellement les étapes d’authentification?

Le problème est que, bien que diverses bibliothèques dissortingbuées avec Windows / Office s’occupent de HTTP et SSL, il n’est pas simple d’en trouver une qui fonctionne avec SAML. .NET a Windows Communication Foundation (WCF), qui peut être utilisé dans VBA, mais je ne sais pas comment cela fonctionne avec les sites Web.

Si vous ne parvenez pas à faire en sorte que WCF exécute SAML, le plus simple serait d’automatiser Internet Explorer, car Internet Explorer contient déjà la fonctionnalité SAML. Malheureusement, la seule chose difficile à automatiser dans Internet Explorer consiste à télécharger des fichiers, en particulier si vous ne voulez pas que des choses apparaissent sur l’écran de l’utilisateur.

Vous devez utiliser l’API Windows pour interagir par programmation avec la boîte de dialog “Enregistrer sous” d’Internet Explorer, tout en la masquant. L’article suivant décrit comment procéder: http://www.codeproject.com/Articles/2847/Automated-IE-SaveAs-MHTML Cet article utilise C ++, mais vous pouvez effectuer les mêmes appels d’API à partir de VBA.

Je suppose que c’est une question de savoir quel type de SAML le serveur utilise, et de décider ce qui serait plus facile: (a) automatiser Internet Explorer ou (b) écrire votre propre client SAML.

Si vous envisagez d’écrire votre propre client SAML, vous pouvez utiliser MSXML pour consumr et produire le fichier XML requirejs et encoder / décoder base64.