Je souhaite pouvoir télécharger un fichier à partir d'un appel d'API. Pour l'amour de l'argument, disons que c'est un fichier PDF généré automatiquement.Comment télécharger un fichier sécurisé avec IdentityServer
J'ai deux problèmes:
- balises d'ancrage ne peuvent pas ajouter
Authorization
têtes à la demande, queXHR
can. XHR
Les demandes ne peuvent pas télécharger de fichiers.
Ma solution est d'écrire mon API avec un point final [AllowAnonymous]
en elle, qui prend la access_token
comme paramètre. Je valide ensuite le jeton d'accès à la main et renvoie un 401 ou flux le PDF.
Y at-il une meilleure solution que celle-ci ou, si c'est la meilleure solution, comment puis-je valider le access_token
au sein de l'API?
Vous pouvez utiliser le flux OAuth des informations d'identification du client. Première étape, créez Web Api en tant que client dans identityserver3. Étape 2, utilisez l'ID client et le secret pour obtenir un jeton d'accès du serveur d'identification. Troisième étape, dans la requête à l'API Web, ajouter un en-tête d'autorisation avec un jeton "Porteur". Regardez ici: http://www.developerhandbook.com/c-sharp/create-restful-api-authentication-using-web-api-jwt/ – TejSoft
Donc le problème est plus d'un problème de javascript/XHR que IdSvr? Nous avons une API qui renvoie les fichiers générés, et c'est un point de terminaison protégé (de la manière habituelle). Le retour de ce point de terminaison est un 'FileContentResult'. Essayer d'appeler ce point de terminaison avec un appel AJAX implique de passer par les cerceaux habituels [javascript-download-a-file] (https://stackoverflow.com/questions/16086162/handle-file-download-from-ajax-post) . – Mashton