2010-05-25 13 views
18

Czy jest możliwe ustawienie usługi WCF z SSL i uwierzytelnianie podstawowe w IIS przy użyciu tylko wiązania BasicHttpBinding? (Nie mogę użyć wsHttpBinding-wiązanie)Jak mogę używać WCF z tylko podstawami basichttpbinding, SSL i podstawowym uwierzytelnianiem w IIS?

że witryna jest obsługiwana w IIS 7, z następującym uwierzytelniania konfigurowaniu:

- Anonymous access: off 
    - Basic authentication: on 
    - Integrated Windows authentication: off !! 

Służby config:

<services> 
    <service name="NameSpace.SomeService"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="https://hostname/SomeService/" /> 
     </baseAddresses> 

    </host> 
    <!-- Service Endpoints --> 
    <endpoint address="" binding="basicHttpBinding" 
       bindingNamespace="http://hostname/SomeMethodName/1" 
       contract="NameSpace.ISomeInterfaceService" 
       name="Default" 
         /> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpsGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
     <exceptionShielding/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

próbowałem 2 typy powiązań z dwoma różnymi błędami:

1 - Błąd IIS: "Nie można znaleźć adresu bazowego zgodnego ze schematem http dla punktu końcowego z powiązaniem BasicHttpBinding. Zarejestrowane schematy adresów bazowych to [https].

<bindings> 
    <basicHttpBinding> 
    <binding> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Basic"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 

</bindings> 

2 - IIS Błąd: Ustawienia zabezpieczeń dla tej usługi wymaga uwierzytelniania „Anonymous”, ale to nie jest włączona dla aplikacji IIS, który obsługuje tę usługę.

<bindings> 
    <basicHttpBinding> 
    <binding> 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 

</bindings> 

Czy ktoś wie, jak skonfigurować to poprawnie? (jeśli to możliwe?)

Odpowiedz

24

Po kilku kopaniu i zadawaniu pytań kilku kolegom, w końcu rozwiązaliśmy problem.

Ważne jest, aby zrozumieć, że w tym przypadku istnieją 2 aspekty bezpieczeństwa. Zabezpieczenia IIS i zabezpieczenia WCF.

Zabezpieczenia IIS: Włącz SSL & Włącz uwierzytelnianie podstawowe. Wyłącz uwierzytelnianie anonimowe. (Oczywiście, należy utworzyć konto okna/grupę i ustawić uprawnienia aplikacji w IIS).

WCF bezpieczeństwa: Ponieważ wiązanie jest tylko BasicHttpBinding, usługa nie wymaga niczego ważnego. IIS jest odpowiedzialny za to.

Konfiguracja wiązanie usługi:

<bindings> 
    <basicHttpBinding> 
    <binding> 
     <security mode="Transport"> 
      <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 

I wreszcie, aby rozwiązać ten pierwszy błąd, że usunięte MEX końcowego. Ten punkt końcowy wymaga powiązania HTTP.

Deleted:

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
+2

Dziękuję za ten post. Co masz na myśli przez "ustawić uprawnienia do twojej aplikacji w IIS"? –

+2

Jakie grupy Kont użytkowników Windows powinny być długie? Jakie uprawnienia należy skonfigurować? –

+2

Dlaczego usunąć ''? – Kiquenet

Powiązane problemy