Connecting from DMZ
When the FIX servers are on the DMZ and not on the same domain as the OMS servers new username/password services must be added.
On the KODIAK Oms Server these configurations must be in place:
KodiakOrderEntryServer/Config/ServiceConfig/
CustomServices.config
<object id="InstrumentServiceBasic" type="Kodi.Kodiak.Services.InstrumentService, Kodi.Kodiak.BasicData" singleton="false" scope="session">
<property name="InstrumentRepository" ref="InstrumentRepository"/>
<property name="ExchangeRepository" ref="ExchangeRepository"/>
<property name="ExchangeMembersRepository" ref="ExchangeMembersRepository"/>
<property name="ExchangeTradersRepository" ref="ExchangeTradersRepository"/>
<property name="TickSizeRepository" ref="TickSizeRepository"/>
<property name="BrokerRepository" ref="BrokerRepository"/>
</object>
<object id="FixServiceBasic" type="Kodi.Kodiak.OrderEntry.FixServices.FixService, Kodi.Kodiak.OrderEntry.FixServices" singleton="false" scope="session">
<property name="LoginRepository" ref="LoginRepository"/>
<property name="UserRepository" ref="UserRepository" />
<property name="GroupRepository" ref="GroupRepository" />
<property name="DiscountCategoryRepository" ref="DiscountCategoryRepository" />
<property name="SystemSettings" ref="SystemSettings" />
<property name="ClientSettings" ref="ClientSettings" />
</object>
<object id="OrderInstructionServiceBasic" type="Kodi.Kodiak.Services.OrderInstructionService, Kodi.Kodiak.OrderInstructions" singleton="false" scope="session">
<property name="OrderInstructionEntry" ref="OrderInstructionEntryDma"/>
<property name="OrderInstructionSearch" ref="OrderInstructionSearch"/>
</object>
system.servicemodel.services.config
<service behaviorConfiguration="BasicAuthServiceBehavior" name="OrderInstructionServiceBasic">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IOrderInstructionService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="BasicAuthServiceBehavior" name="InstrumentServiceBasic">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IInstrumentService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="BasicAuthServiceBehavior" name="FixServiceBasic">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.OrderEntry.FixServices.IFixService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
system.servicemodel.bindings.config
Add the following in <basicHttpBinding>
<binding name="BasicAuthBinding"
closeTimeout="00:10:00"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
system.servicemodel.behaviours.config
<behavior name="BasicAuthServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Kodi.Kodiak.Security.BasicUsernamePasswordValidator, Kodi.Kodiak.Security" />
</serviceCredentials>
<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="200" maxConcurrentInstances="200" />
<dataContractSerializer maxItemsInObjectGraph="2147483646" />
</behavior>
KodiakServicesServer/Config/Services
CustomServices
<object id="AdminServiceBasic" type="Kodi.Kodiak.Services.AdminService, Kodi.Kodiak.Admin" singleton="false" scope="session">
<property name="MarketGatewayRepository" ref="MarketGatewayRepository"/>
<property name="MarketGatewayConnectionRepository" ref="MarketGatewayConnectionRepository"/>
<property name="ExchangeRepository" ref="ExchangeRepository"/>
<property name="BrokerRepository" ref="BrokerRepository"/>
<property name="UserRepository" ref="UserRepository"/>
<property name="GroupRepository" ref="GroupRepository"/>
<property name="ExternalUserRepository" ref="ExternalUserRepository"/>
<property name="CustomerRepository" ref="CustomerRepository"/>
<property name="PortfolioRepository" ref="PortfolioRepository"/>
<property name="AccountRepository" ref="AccountRepository"/>
<property name="TraderRepository" ref="TraderRepository"/>
<property name="MarketGatewayEntityBuilder" ref="MarketGatewayEntityBuilder"/>
<property name="MarketGatewayConnectionEntityBuilder" ref="MarketGatewayConnectionEntityBuilder"/>
<property name="TraderEntityBuilder" ref="TraderEntityBuilder"/>
<property name="BrokerEntityBuilder" ref="BrokerEntityBuilder"/>
</object>
system.servicemodel.services.config
<service behaviorConfiguration="BasicAuthServiceBehavior" name="AdminServiceBasic">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IAdminService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
system.servicemodel.bindings.config
Add the following in <basicHttpBinding>
<binding name="BasicAuthBinding"
closeTimeout="00:10:00"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
system.servicemodel.behaviours.config
<behavior name="BasicAuthServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Kodi.Kodiak.Security.BasicUsernamePasswordValidator, Kodi.Kodiak.Security" />
</serviceCredentials>
<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="200" maxConcurrentInstances="200" />
<dataContractSerializer maxItemsInObjectGraph="2147483646" />
</behavior>
The Client config in the FIX server must be in place:
Environment/system.servicemodel.client.config
<?xml version="1.0" encoding="utf-8"?>
<client>
<!-- WsHttpBindings using windows authentication -->
<endpoint address="http://XXXXX:8080/InstrumentServiceBasic.svc" behaviorConfiguration="BehaviorConfig" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IInstrumentService" name="InstrumentService" />
<endpoint address="http://XXXXX:8080/OrderInstructionServiceBasic.svc" behaviorConfiguration="BehaviorConfig" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IOrderInstructionService" name="OrderInstructionService" />
<endpoint address="http://XXXXX:8080/AdminServiceBasic.svc" behaviorConfiguration="BehaviorConfig" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IAdminService" name="AdminService" />
<endpoint address="http://XXXXX:8080/FixServiceBasic.svc" behaviorConfiguration="BehaviorConfig" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.OrderEntry.FixServices.IFixService" name="FixService" />
</client>
Environment/appSettings.config the following must be configed
<add key="UseOmsBasicAuthentication" value="true" />
<add key="OmsUsername" value="XXX" />
<add key="OmsPassword" value="XXX"/>
Create User Group and Default user in AdminX
Create External User in AdminX with the correct customer the external user will be connect to the correct Comp Id ín the FIX server