WebAPI de la SCRO avec l'Authentification Windows - option autoriser l'accès Anonyme demande

J'ai un WebAPI 2 service de REPOS en cours d'exécution avec l'Authentification Windows. Il est hébergé séparément sur le site, donc j'ai activé la SCRO à l'aide de la ASP.NET la SCRO package NuGet. Mon client site est en utilisant AngularJS.

Jusqu'à présent, voici ce que j'ai vécu:

  1. Je n'avais pas withCredentials ensemble, de sorte que la SCRO les demandes de retour d'un 401. Résolu en ajoutant withCredentials de mon $httpProvider config.
  2. Côté, j'avais mis mon EnableCorsAttribute avec un générique d'origine, qui n'est pas autorisé lors de l'utilisation d'informations d'identification. Résolu en définissant la liste explicite des origines.
  3. Cela a permis à mes demandes pour réussir, mais mon POST a publié une demande de contrôle en amont, et je n'avais pas créé de contrôleur des actions pour soutenir les OPTIONS de verbe. Pour résoudre ce problème, j'ai mis en place un MessageHandler comme une des OPTIONS globales de gestionnaire. Il renvoie simplement à 200 pour toute demande d'OPTIONS. Je sais que ce n'est pas parfait, mais il fonctionne pour l'instant, dans un violon.

Où je suis collé à mon Angulaire de contrôle en amont des appels ne sont pas compris les informations d'identification. Selon cette réponse, c'est par la conception, comme les OPTIONS les demandes sont conçus pour être anonyme. Cependant, l'Authentification Windows est l'arrêt de la demande avec un 401.

J'ai essayé de mettre le [AllowAnonymous] attribut sur mon MessageHandler. Sur mon dev ordinateur, il fonctionne - OPTIONS verbes ne nécessitent pas d'authentification, mais d'autres verbes faire. Lorsque je créer et déployer le serveur de test, si, je suis en continuant à obtenir un 401 de ma demande.

Est-il possible d'appliquer [AllowAnonymous] sur mon MessageHandler lors de l'utilisation de l'Authentification Windows? Dans ce cas, les conseils sur la façon de le faire? Ou est-ce le mauvais trou de lapin, et je devrais être à la recherche à une approche différente?

Mise à JOUR:
J'ai été en mesure de l'obtenir pour fonctionner en définissant à la fois l'Authentification Windows et l'Authentification Anonyme sur le site dans IIS. Cela a causé tout pour autoriser les connexions anonymes, donc j'ai ajouté un filtre global de l'Autoriser, tout en conservant la AllowAnonymous sur mon MessageHandler.

Cependant, cela se sent comme un hack...j'ai toujours entendu qu'une seule méthode d'authentification doit être utilisé (pas de mélange). Si quelqu'un a une meilleure approche, je vous en serais reconnaissant entendu parler de lui.

Vous devriez également ajouter une balise de type 'selfhost" ou "owin", car cela n'est pas lié à quelque chose comme IIS. 🙂
J'ai utilisé ce guide codeproject.com/Articles/1119206/... (publié en 2016), qui est très similaire à la plupart des réponses ci-dessous

OriginalL'auteur Dave Simione | 2014-12-11