Security

Every call made to the SlingShot Web Service API must contain a security token as a header parameter (‘X-Security-Token’).

What you need

You need a Web Service UID and a shared secret key to create a valid security token. Contact Surgent Networks to get yours.

Token

The security token expected is of the form [Web Service UID]:[Encrypted Token]

  • The Web Service UID serves to establish the identity of the caller
  • The Encrypted token serves to verify the callers claimed identity

Create an Encrypted token by building the following String and encrypting it using the AES protocol (refer to the following Java example):

[Unique Token Id]:[Timestamp]:[Web Service UID]
  • A unique Token ID is any unique String you chose. This ensures that every token is used only once.
  • Timestamp is the current time in milliseconds. This ensures that a token is only valid for a limited time (60 minutes for test environment)
  • The Web Service UID is used to verify an unencrypted ID

Following is an example Security Token:

ba230daf-124b-4c16-b002-8d85fa78301e:bUjmK9Qapul-RZEDOBqScPxupsBhLhiBHqaJzCIud8i8lmVJxFlF-Maf3gRSIKGuEB-U7HNyuzzcJ-RKL75cvD9NW8_3vloZV0ARPICsra8yRkjoQaT-66uxxp8jAHr7

How to get your Token?

There are three different ways to get your security Token:

1. Authentication Service

For testing purposes we created a Web Service that will generate a token for you based on your SlingShot Web Service ID and Secret Key. Go here for details.

2. Client Token Generator

For your convenience, Surgent Networks distributes the “Token Generator,” a Java library you can use in your code or execute on the command line to generate tokens for communication with the SlingShot Web Service API.

Command Line

Switch to the folder where the Token Generator .jar is located and execute:

java -jar TokenGenerator-1.0-SNAPSHOT-jar-with-dependencies.jar [wsuid] [secretkey]

Java Code

Add the Token Generator Library to your Java Project and call the public static methods:

TokenGenerator.getFullToken(guid, key) or
TokenGenerator.generateToken(guid, key)

The second method will only create an Encrypted Token. The first method creates a full security token.

3. Java Sample Code

 String sCompositeValue = tokenUid + ":" + System.currentTimeMillis() + ":" + wsUid;
SecretKeySpec key = new SecretKeySpec(Base64.decodeBase64(key.getBytes()), "AES");
String encryptedToken = null;
try
{
final Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
final byte[] encrypted = cipher.doFinal( sCompositeValue.getBytes() );
encryptedToken =  new String( Base64.encodeBase64( encrypted, false, true ) );
}
catch( ... e )
{
...
}