SoerenSchmidt
Grünschnabel
Hallo,
ich habe ein Problem mit der Authentifizierung eines Webservice den ich selbst geschrieben habe. Solange er Lokal aufgerufen wird, arbeitet alles wie erwartet. Jedoch sobald der Aufruf von einer anderen Maschine eintrifft, sendet der IIS den HTTP-Code 401 (Authorization required). Eigentlich ist der Service auf Anonymous-Authentifizierung eingestellt (IIS-Konfiguration der Maschine, Standardwebseite und Web.config des Service selbst), dennoch erwartet der IIS eine Windows-Authentifizierung.
Die NTFS-Rechte können ausgeschlossen werden, da "*.aspx"-Seiten auch extern aufgerufen werden können, nur wenn eine Funktion innerhalb der "*.svc"-Datei angesprochen wird, fordert der IIS die Authentifizierung.
Hat hier jemand eine Idee, was das Problem sein könnte? Gibt es eventuell eine spezielle Konfigurationsdatei der Windows Communication Foundation?
Weitere Informationen:
Webserver: IIS 7
OS: Windows Server 2008
IDE: Visual Studio 2008
.NET Framework: 3.5 SP1
AspKompatibilität wird benötigt.
Service Architektur: REST
HTTP-Handler: svc-Integrated
AppPool: DefaultAppPool (Integrated)
Hier ist die Web.config des Webservice. Habe ich vielleicht hier etwas vergessen, oder falsch eingetragen?
Wenn ich versuche hier im Bereich Webserver die Authentifizierung einzustellen, bekomme ich die Meldung, dass mir es von einer höheren Instanz verboten ist, oder das Überschreiben untersagt ist.
Quelltext der nicht einzustellen geht:
Welche Instanz könnte das sein? Oder wie kann ich das Überschreiben erlauben?
Im IIS-Manager sind die Methoden so eingestellt, wie ich sie auch versuche in der Web.config zu setzen.
Ich danke vielmals im Voraus und hoffe, dass mir jemand weiterhelfen kann.
Mit freundlichen Grüßen
Sören Schmidt
ich habe ein Problem mit der Authentifizierung eines Webservice den ich selbst geschrieben habe. Solange er Lokal aufgerufen wird, arbeitet alles wie erwartet. Jedoch sobald der Aufruf von einer anderen Maschine eintrifft, sendet der IIS den HTTP-Code 401 (Authorization required). Eigentlich ist der Service auf Anonymous-Authentifizierung eingestellt (IIS-Konfiguration der Maschine, Standardwebseite und Web.config des Service selbst), dennoch erwartet der IIS eine Windows-Authentifizierung.
Die NTFS-Rechte können ausgeschlossen werden, da "*.aspx"-Seiten auch extern aufgerufen werden können, nur wenn eine Funktion innerhalb der "*.svc"-Datei angesprochen wird, fordert der IIS die Authentifizierung.
Hat hier jemand eine Idee, was das Problem sein könnte? Gibt es eventuell eine spezielle Konfigurationsdatei der Windows Communication Foundation?
Weitere Informationen:
Webserver: IIS 7
OS: Windows Server 2008
IDE: Visual Studio 2008
.NET Framework: 3.5 SP1
AspKompatibilität wird benötigt.
Service Architektur: REST
HTTP-Handler: svc-Integrated
AppPool: DefaultAppPool (Integrated)
Hier ist die Web.config des Webservice. Habe ich vielleicht hier etwas vergessen, oder falsch eingetragen?
Code:
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
</compilation>
<anonymousIdentification enabled="true"/>
<authorization>
<allow users="?"/>
<deny users="*"/>
</authorization>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</controls>
</pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5" />
<providerOption name="WarnAsError" value="false" />
</compiler>
</compilers>
</system.codedom>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
<defaultDocument>
<files>
<add value="Service.svc" />
</files>
</defaultDocument>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="basicBinding" maxReceivedMessageSize="655360">
<readerQuotas maxArrayLength="655360" />
<security mode="None"/>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="ConMMBinding" maxReceivedMessageSize="655360">
<readerQuotas maxArrayLength="655360" />
<security mode="None"/>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="httpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceCredentials>
<windowsAuthentication allowAnonymousLogons="true"/>
</serviceCredentials>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="Service" behaviorConfiguration="ServiceBehavior">
<endpoint address="" behaviorConfiguration="httpBehavior" binding="webHttpBinding" bindingConfiguration="ConMMBinding" contract="IService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
<headers>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true"/>
</authentication>
<authorization>
<add accessType="Allow" users="?"/>
</authorization>
</security>
</system.webServer>
</headers>
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
Wenn ich versuche hier im Bereich Webserver die Authentifizierung einzustellen, bekomme ich die Meldung, dass mir es von einer höheren Instanz verboten ist, oder das Überschreiben untersagt ist.
Quelltext der nicht einzustellen geht:
Code:
<system.webServer>
...
<security>
<authentication>
<anonymousAuthentication enabled="true"/>
<windowsAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
Welche Instanz könnte das sein? Oder wie kann ich das Überschreiben erlauben?
Im IIS-Manager sind die Methoden so eingestellt, wie ich sie auch versuche in der Web.config zu setzen.
Ich danke vielmals im Voraus und hoffe, dass mir jemand weiterhelfen kann.
Mit freundlichen Grüßen
Sören Schmidt