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="ServiceBehavior" 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> 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="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="ServiceBehavior" 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> 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/KodiakServiceBasic.svc" behaviorConfiguration="BehaviorConfig" binding="basicHttpBinding" bindingConfiguration="BasicAuthBinding" contract="Kodi.Kodiak.Services.ServiceContracts.IKodiakService" name="KodiakService" /> <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/OrderInstructionServiceNyFixBasic.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"/>