Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

It is possible to have a wcf with basic authentication.

For this the service needs to be configured with a behavior and the enpoint needs a binding configuration.

Example:

Code Block
<!-- For use with Retail DMA -->
<service behaviorConfiguration="BasicAuthServiceBehavior" 
      name="RetailOrderInstructionService">
	<endpoint address="" binding="webHttpBinding" 
  	    contract="Kodi.Kodiak.Services.IRetailOrderInstructionService" 
		behaviorConfiguration="rest" 
	    bindingConfiguration="WebHttpsMessageCredentialBinding"/>
</service>

service.Service BehaviorConfiguration

serviceBehaviors

Code Block
<behaviors>
	<serviceBehaviors>
	<behavior name="BasicAuthServiceBehavior">
		<serviceMetadata httpGetEnabled="false" />
		<serviceDebug includeExceptionDetailInFaults="true" />
		<serviceCredentials>
			<userNameAuthentication userNamePasswordValidationMode="Custom" 
			customUserNamePasswordValidatorType="Kodi.Kodiak.Security.BasicUsernamePasswordValidator, Kodi.Kodiak.Security" />
			<serviceCertificate storeLocation="LocalMachine" 
			   storeName="My" 
			   x509FindType="FindByThumbprint" 
			   findValue="ea90bdd15d16be21bd17b547da5690e1756e6a3b"/>				
		</serviceCredentials>
		<serviceThrottling maxConcurrentCalls="200" 
		     maxConcurrentSessions="200" maxConcurrentInstances="200" />
		<dataContractSerializer maxItemsInObjectGraph="2147483646" />
	</behavior>

...


	...

Endpoint BindingConfiguration

needs to have a transport node with clientCredentialType = “Basic”

Code Block
<bindings>
<webHttpBinding>
<binding name="WebHttpsMessageCredentialBinding">
	<security mode="Transport">
		<transport clientCredentialType="Basic" />
	</security>
</binding>	
...