Façon la plus simple pour ajouter l'authentification de Base pour le web.config avec user/pass

Je suis la mise en place d'une API Azure de Gestion avec un ASP.NET WebApi 2 app derrière elle. API de Gestion recommande de mettre en place l'authentification Basique entre l'API de procuration de la direction et de la ASP.NET WebApi assurez-vous que le WebApi n'est accessible que par le biais de l'API de procuration de la direction.

(Bien sûr OAuth les jetons seront toujours envoyés avec la demande pour le "réel" de l'authentification, mais je vais ajouter que plus tard.)

Avec cela à l'esprit, je n'ai pas vraiment envie de inplement le Basic auth dans l'application, je voudrais l'avoir manipulé par les services internet exclusivement, via le Web.config.

Comment puis-je configurer mon Web.config pour faire de l'authentification basique avec un nom d'utilisateur/mot de passe stocké dans le Web.config?

J'ai essayé de suivre cet article (http://www.4guysfromrolla.com/articles/122408-1.aspx) mais je n'ai pas beaucoup de chance.

Cette question est sans réponse, mais ils ont probablement demander une chose semblable: web.config mono-utilisateur basic auth

D'autres réponses que j'ai trouvé ici inclure l'ajout de l'authentification à l'intérieur de l'application dont je ne veux pas faire.

Voici mon site Web.config:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </configSections>
  <appSettings configSource="bin\debug-appSettings.config"/>
  <connectionStrings configSource="bin\debug-connectionStrings.config"/>
  <system.web>
    <compilation targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
    <authentication mode="Forms">
      <forms>
        <credentials passwordFormat="Clear">
          <user name="test" password="test" />
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <allow users="test" />
      <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
    <modules>
      <remove name="FormsAuthenticationModule" />
      <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
      <remove name="UrlAuthorization" />
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
    </modules>
    <security>
      <authentication>
        <basicAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Azure.AppService.ApiApps.Service" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-0.9.64.0" newVersion="0.9.64.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="MiniProfiler" publicKeyToken="b44f9351044011a3" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.2.0.157" newVersion="3.2.0.157"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.20622.1351" newVersion="4.0.20622.1351"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-6.1.0.0" newVersion="6.1.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb"/>
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>
</configuration>

- Je envoyer une demande avec PostMan avec les en-têtes suivants:

Authorization: Basic dGVzdDp0ZXN0
Content-Type: application/json

Mais tout ce que j'obtiens est le 401.1 page par IIS.

Façon la plus simple pour ajouter l'authentification de Base pour le web.config avec user/pass

Ce qui me manque?

Les formes Auth et Basic Auth sont deux choses différentes. Si vous ne l'authentification basique avec IIS, vous devez créer un compte avec le nom d'utilisateur et mot de passe. Et vous aurez besoin d'utiliser le protocole https pour votre API. Vous pouvez également utiliser une API Azure Application et que l'API privé.
Espérons que cette vidéo vous aide un peu: channel9.msdn.com/Blogs/AzureApiMgmt/Last-mile-Security
l'Authentification de Base est un terme défini dans le navigateur affiche un natif de la boîte demandant le nom d'utilisateur et le mot de passe, et les informations d'identification seront testés sur les comptes d'utilisateur Windows sur le serveur Windows. Ce comportement est spécifié dans tools.ietf.org/html/rfc7617. Ce que vous demandez est une authentification de base.

OriginalL'auteur Adam Szabo | 2015-11-28