How to connect to CME Globex using Secure Logon API
CME secure logon provides an ability to log on using SHA256 digital signature technique. This login feature has been introduced by CME and provides the highest security.
It needs to obtain a security keys file from CME (CME Request Center NR/Cert) in order to use it. Once it is available, FIX Antenna can be configured to use secure login for connecting to CME.
For connecting to EBS Globex Secure API the Session ID in the exported cmekeys.txt should be truncated to the first 3 characters.
For example, TSTEBSN
should become TST
.      Â
The session that connects using CME secure feature may be created in the code:
SessionParameters details = new SessionParameters(); details.setFixVersion(FIXVersion.FIX42); details.setHost("localhost"); details.setHeartbeatInterval(30); details.setPort(3000); details.setSenderCompId("senderId"); details.setTargetCompId("targetId"); details.setSenderSubId("senderSubId"); details.setTargetSubId("targetSubId"); details.setSenderLocationId("senderLocationId"); //the following three parameters are required for the feature. details.getConfiguration().setProperty(Configuration.INCLUDE_LAST_PROCESSED, "YES"); details.getConfiguration().setProperty(Configuration.CME_SECURE_KEYS_FILE, "cmeKeys.txt"); //Defines name of keys file. It should be located in classpath, root directory of running java application or home directory. details.getConfiguration().setProperty(Configuration.LOGON_CUSTOMIZATION_STRATEGY, Configuration.CME_SECURE_LOGON_STRATEGY); final FIXSession session = details.createNewFIXSession(); ... session.connect();
It can also be created using properties:
sessionIDs=client1 sessions.default.host=69.50.112.139 sessions.default.port=24920 sessions.default.fixVersion=FIX.4.2 sessions.default.heartbeatInterval=30 sessions.default.validation=false sessions.default.storageFactory=com.epam.fixengine.storage.InMemoryStorageFactory sessions.default.cmeSecureKeysFile=cmeKeys.txt sessions.default.logonCustomizationStrategy=com.epam.fixengine.session.impl.CmeSecureLogonStrategy sessions.default.includeLastProcessed=true sessions.client1.senderCompID=U89004N sessions.client1.targetCompID=CME sessions.client1.targetSubID=G sessions.client1.senderSubID=0J4L sessions.client1.senderLocationID=US
and applied using the following code:
SessionParameters details = SessionParametersBuilder.buildSessionParameters("initiators.properties", "client1"); // create session we intend to work with final FIXSession session = details.createInitiatorSession(); ... session.connect();
Note:Â tags SenderSubID, TargetSubID, SenderLocationID are required for the feature.
Available from:Â 2.19.0