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.
Ce qui me manque?
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
Vous devez vous connecter pour publier un commentaire.
J'ai fini la mise en œuvre de BasicAuthentication comme un HttpModule. Je mettrai à jour cette réponse plus tard avec plus de détails.
Edit:
NuGet package: https://www.nuget.org/packages/Hexasoft.BasicAuthentication
Source: https://github.com/hexasoftuk/Hexasoft.BasicAuthentication
OriginalL'auteur Adam Szabo