Namespace: Logon

sap. Logon

The Logon plugin provides screen flows to register an app with an SAP Mobile Platform server.

The logon plugin is a component of the SAP Mobile Application Framework (MAF), exposed as a Cordova plugin. The basic idea is that it provides screen flows where the user can enter the values needed to connect to an SAP Mobile Platform 3.0 server and stores those values in its own secure data vault. This data vault is separate from the one provided with the encrypted storage plugin. In an OData based SAP Mobile Platform 3.0 application, a client must onboard or register with the SAP Mobile Platform 3.0 server to receive an application connection ID for a particular app. The application connection ID must be sent along with each request that is proxied through the SAP Mobile Platform 3.0 server to the OData producer.

Adding and Removing the Logon Plugin
The Logon plugin is added and removed using the Cordova CLI.

To add the Logon plugin to your project, use the following command:
cordova plugin add kapsel-plugin-logon

To remove the Logon plugin from your project, use the following command:
cordova plugin rm kapsel-plugin-logon

Members

(static) applicationId

The application ID with which sap.Logon.init was called. It is available here so it is easy to access later.
Example
// After calling the init function
alert("The app ID for this app is: " + sap.Logon.applicationId);

(static) core

Direct reference to the logon core object used by the Logon plugin. This property is obsolete, and it is only kept for backward compatible purpose. Caller should replace it with sap.logon.Core.

(static) fireEvent

This funciton is used for firing an Event * Usage sap.Logon.fireEvent(eventid, arguments);

(static) loadConfiguration

Calling this method to load the configuration before starting registration.

Methods

(static) changePassword(onsuccess, onerror)

This method will launch the UI screen for application users to manage and update the back-end passcode that Logon stores in the data vault that is used to authenticate the client to the server. When this method is called, the new password will be validated on the application's backend endpoint.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The callback to call if the screen flow succeeds. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(context){
    alert("Password successfully changed.");
}
sap.Logon.changePassword(successCallback,errorCallback);

(static) deletePasscodeManager(successCallback, errorCallback)

Function to delete the datavault and all data stored therein. This function is intended to be used when Logon has been initialized as a passcode manager via sap.Logon.initPasscodeManager. However, if it has been initialized for server registration (via sap.Logon.init), calling this function will delete the registration and all data.
Parameters:
Name Type Description
successCallback sap.Logon~successCallbackNoParameters The function that is invoked if the deletion is successful.
errorCallback sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var successCallback = function(){
    alert("successfully deleted all data");
}

var errorCallback = function(errorInfo){
    alert("error: " + JSON.stringify(errorInfo));
}
sap.Logon.deletePasscodeManager(successCallback, errorCallback);

(static) get(onsuccess, onerror, key)

Get an (JSON serializable) object from the DataVault for a given key.
Parameters:
Name Type Description
onsuccess sap.Logon~getSuccessCallback The function that is invoked upon success. It is called with the resulting object as a single parameter. This can be null or undefined, if no object is defined for the given key.
onerror sap.Logon~errorCallback The function to invoke in case of error.
key string The key with which to query the DataVault.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var getSuccess = function(value){
    alert("value retrieved from the store: " + JSON.stringify(value));
}
var setSuccess = function(){
    sap.Logon.get(getSuccess,errorCallback,'someKey');
}
sap.Logon.set(setSuccess,errorCallback,'someKey', 'some string (could also be an object).');

(static) getConfiguration(onsuccess, onerror, key)

Get an (JSON serializable) configuration object from the logon based on configuration type.
Parameters:
Name Type Description
onsuccess sap.Logon~getSuccessCallback The function that is invoked upon success. It is called with the resulting object as a single parameter. This can be null or undefined, if no object is defined for the given type.
onerror sap.Logon~errorCallback The function to invoke in case of error.
key string The type for the configuration. Currently only valid type is 'authentication', the returned configuration data can be used by authproxy plugin's sendReqeust2 method
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var getSuccess = function(value){
    alert("value retrieved from the store: " + JSON.stringify(value));
}
    sap.Logon.getConfiguration(getSuccess,errorCallback,'authentication');

(static) init(successCallback, errorCallback, applicationId, contextopt, logonViewopt, certificateProviderClassNameopt)

Initialization method to set up the Logon plugin. This will register the application with the SMP server and also authenticate the user with servers on the network. This step must be done first prior to any attempt to communicate with the SMP server.

This function and sap.Logon.initPasscodeManager are mutually exclusive. Do not call both.
Parameters:
Name Type Attributes Default Description
successCallback sap.Logon~successCallback The function that is invoked if initialization is successful. The current context is passed to this function as the parameter.
errorCallback sap.Logon~errorCallback The function that is invoked in case of an error.
applicationId string The unique ID of the application. Must match the application ID on the SAP Mobile Platform server.
context object <optional>
The context with default values for application registration, as well as options to customize the Logon plugin screens. See sap.Logon~successCallback for the structure of the context object. Note that all properties of the context object are optional, and you only need to specify the properties for which you want to provide default values for. The values will be presented to the application users during the registration process and given them a chance to override these values during runtime. There are two additional values that can be specified in the context that are not described in sap.Logon~successCallback: "mobilePlaceAppID" and "mobilePlaceAppVersion". If left blank, the mobilePlaceAppID will default to the applicationId provided to this function. mobilePlaceAppVersion defaults to "1.0". The mobile place app ID and version are used in combination to retrieve the configuration from Mobile Place.
logonView string <optional>
sap.logon.LogonJsView The cordova module ID of a custom renderer for the logon, implementing the [showScreen(), close()] interface. Please use the default module unless you are absolutely sure that you can provide your own custom implementation. Please refer to JavaScript files inside your Kapsel project's plugins\logon\www\common\modules\ folder as example.
certificateProviderClassName string <optional>
The name identifying the custom certificate provider to use. This parameter should only be specified if the app is supposed to use a custom certificate provider. In that case, the string specified by this parameter must match the android:name of the meta-data tag in AndroidManifest.xml (the value for that tag will be the classpath and classname).
Example
// a custom UI can be loaded here
var logonView = sap.logon.LogonJsView;

// The app ID
var applicationId = "someAppID";

// You only need to specify the fields for which you want to set the default.   These values are optional because they will be 
// used to prefill the fields on Logon's UI screen.
// You can override UI defaults by setting the "custom" property.
var defaultContext = {
 "appName": "My App",
 "serverHost": "defaultServerHost.com",
 "https": false,
 "serverPort": "8080",
 "user": "user1",
 "password": "Zzzzzz123",
 "communicatorId": "REST",
 "securityConfig": "sec1",
 "farmId": "",
 "resourcePath": "",
 "passcode": "Aaaaaa123",
 "unlockPasscode": "Aaaaaa123",

 "custom": {
     // This is the Fiori Client background image
     "backgroundImage": "../../../background.jpg",

     // These fields will be hidden, but any default values specified above will still be sent
     "hiddenFields": ["resourcePath", "farmId", "securityConfig"],

     // This option hides the logo and copyright information
     "hideLogoCopyright": true,

     // This option specifies a custom logo image
     "copyrightLogo": "../../../sapLogo.png",

     // This option specifies both lines of the copyright message
     "copyrightMsg": ["Copyright 2016 SAP", "All rights reserved."],

     // This option skips the passcode screen
     "disablePasscode": false

     // This option specifies the css file used to customize the logon screen
     "styleSheet": "../../../custom.css"
 }
};

var app_context;

var successCallback = function(context){
    app_context = context;
}

var errorCallback = function(errorInfo){
    alert("error: " + JSON.stringify(errorInfo));
}
sap.Logon.init(successCallback, errorCallback, applicationId, defaultContext, logonView, "customCertProvider");

(static) initPasscodeManager(successCallback, errorCallback, applicationId, customViewopt, passcodePolicy, context, credentialProviderID)

Initialization method to set up the Logon plugin as a passcode and datavault manager only. When this method is called, the Logon plugin will not do anything with regards to registering with any server.

This function and sap.Logon.init are mutually exclusive. Do not call both.
Parameters:
Name Type Attributes Default Description
successCallback sap.Logon~successCallback The function that is invoked if initialization is successful. The current state is passed to this function as the parameter.
errorCallback sap.Logon~errorCallback The function that is invoked in case of an error.
applicationId string The unique ID of the application. This value will be used as the datavault store ID.
customView string <optional>
sap.logon.LogonJsView The cordova module ID of a custom renderer for the logon, implementing the [showScreen(), close()] interface. Please use the default module unless you are absolutely sure that you can provide your own custom implementation. Please refer to JavaScript files inside your Kapsel project's plugins\logon\www\common\modules\ folder as example.
passcodePolicy Object The passcode policy. Contains information such as expiration days, whether or not the passcode must have digits, lower case letters, special letters or upper case letters, if a default passcode is allowed, whether or not there is a time out and it's associated retry limit, minimum length of passcode and minimum unique characters in the passcode.
context Object If a context is passed, the method simply makes note of it and stores it for future use with other functions. The initPasscodeManager function itself does not use it.
credentialProviderID string The name identifying the custom certificate provider to use. This parameter should only be specified if the app is supposed to use a custom certificate provider. In that case, the string specified by this parameter must match the android:name of the meta-data tag in AndroidManifest.xml (the value for that tag will be the classpath and classname). For ios client, the string specified by this parameter must be added as key into the application info plist file, the value of the key (in string) type is the actual interface name that implements the custom certificate provider.
Example
// a custom UI can be loaded here
var logonView = sap.logon.LogonJsView;

// The app ID
var applicationId = "someAppID";

var successCallback = function(state){
    alert("successfully initialzed, resulting state: " + JSON.stringify(state));
}

var errorCallback = function(errorInfo){
    alert("error: " + JSON.stringify(errorInfo));
}
sap.Logon.initPasscodeManager(successCallback, errorCallback, applicationId, customView, passcodePolicy, context, credentialProviderID);

(static) lock(onsuccess, onerror)

Locks the Logon plugin's secure data vault.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The function to invoke upon success.
onerror sap.Logon~errorCallback The function to invoke in case of error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(){
    alert("Locked!");
}
sap.Logon.lock(successCallback,errorCallback);

(static) managePasscode(onsuccess, onerror)

This method will launch the UI screen for application users to manage and update the data vault passcode or, if the SMP server's Client Passcode Policy allows it, enable or disable the passcode to the data vault.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The function to invoke upon success.
onerror sap.Logon~errorCallback The function to invoke in case of error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(context){
    alert("Passcode successfully managed.");
}
sap.Logon.managePasscode(successCallback,errorCallback);

(static) performSAMLAuth(onsuccess, onerror)

Calling this method will execute a SAML authentication.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The callback to call if saml auth succeeds. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(){
    alert("The saml authentication was successful.");
}
sap.Logon.performSAMLAuth(successCallback,errorCallback);

(static) refreshAccessToken(onsuccess, onerror)

This is an OAuth specific function, which can be used to request new access and refresh tokens from the server at the token end-point. After the new tokens were received, the session is also refreshed by sending a refreshSession request to the server. The new access and refresh tokens are stored permanently in the DataVault.
Parameters:
Name Type Description
onsuccess The callback to call if the operation succeeds.
onerror The function that is invoked in case of an error.
Example
sap.Logon.refreshAccessToken(function (success) {
      utils.debug("Session has been refreshed.");
  }, function (error) {
      utils.log("Failed to refresh the session: " + error);
  }
);

(static) refreshCertificate(onsuccess, onerror)

Calling this method to delete the stored certificate and get a new one.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The callback to call if the screen flow succeeds. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(){
    alert("The certificate is refreshed.");
}
sap.Logon.refreshCertificate(successCallback,errorCallback);

(static) refreshSession(onsuccess, onerror)

This is an OAuth specific function, which can be used during an OAuth based session to request the server for a new, valid session cookie.
Parameters:
Name Type Description
onsuccess The callback to call if the operation succeeds.
onerror The function that is invoked in case of an error.
Example
var successCallback = function(){
    alert("Refreshing the session was successful");
}
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
sap.Logon.refreshSession(successCallback,errorCallback);

(static) set(onsuccess, onerror, key, value)

Set an (JSON serializable) object in the DataVault.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The function to invoke upon success. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function to invoke in case of error.
key string The key to store the provided object on.
value object The object to be set on the given key. Must be JSON serializable (ie: cannot contain circular references).
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var getSuccess = function(value){
    alert("value retrieved from the store: " + JSON.stringify(value));
}
var setSuccess = function(){
    sap.Logon.get(getSuccess,errorCallback,'someKey');
}
sap.Logon.set(setSuccess,errorCallback,'someKey', 'some string (could also be an object).');

(static) showCertificateProviderScreen(onsuccess, onerror)

Calling this method will show a screen which displays the third party certificate provider settings screen for the application.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The callback to call if the screen flow succeeds. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(context){
    alert("The showRegistrationData screenflow was successful.");
}
sap.Logon.showCertificateProviderScreen(successCallback,errorCallback);

(static) showRegistrationData(onsuccess, onerror)

Calling this method will show a screen which displays the current registration settings for the application.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallbackNoParameters The callback to call if the screen flow succeeds. onsuccess will be called without parameters for this method.
onerror sap.Logon~errorCallback The function that is invoked in case of an error.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(context){
    alert("The showRegistrationData screenflow was successful.");
}
sap.Logon.showRegistrationData(successCallback,errorCallback);

(static) startLogonInit()

startLogonInit is a helper method for fiori client. Kapsel project can also use this method to support third party certificate provider. If third party certificate provider is specified, the method will first get certificate from certificate provider before starting the device registration.
When this function is used, then no need to call sap.Logon.init or sap.Logon.initPasscodeManager.
Parameters:
Name Type Description
appDelegate. The appDelegate parameter includes both onRegistrationError and onRegistrationSuccess callback methods.
context. The context parameter includes appConfig, smpConfig and operation properties. smpConfig contains the registration context for SMP registration. appConfig contains appID, isForSMP and certificate settings. operation property contains logon view information.
Example
var context = {};
var appDelegate = {}; 
context.appConfig.appID = "com.mycompany.logon"; // Change this to app id on server
context.appConfig.isForSMP = true;
context.appConfig.certificate = "X509FileCertificateProvider"; //the value must match the key defined in the plist file
context.operation.logonView = sap.logon.LogonJsView;
appDelegate.logonSuccessCallback(result) {
     alert("Successfully Registered");
     applicationContext = result;
}
appDelegate.logonErrorCallback(error) {   //this method is called if the user cancels the registration.
     utils.log("An error occurred:  " + JSON.stringify(error));
     if (device.platform == "Android") {  //Not supported on iOS
         navigator.app.exitApp();
     }
}
 // Optional context for initial values and UI customization
context.smpConfig = {
  "appName": "My App",
  "serverHost": "torn00461340a.amer.global.corp.sap", //Place your SMP 3.0 server name here
  "https": "true",
  "serverPort": "8081",
  "communicatorId": "REST",
  "passcode": "password",  //note hardcoding passwords and unlock passcodes are strictly for ease of use during development
  //once set can be changed by calling sap.Logon.managePasscode()
  "unlockPasscode": "password",
  "passcode_CONFIRM":"password",

  // Use this to customize the Logon plugin UI
  "custom": {
     // This is the Fiori Client background image
     "backgroundImage": "../../../background.jpg",

     // These fields will be hidden, but any default values specified above will still be sent
     "hiddenFields": ["resourcePath", "farmId", "securityConfig"],

     // This option hides the logo and copyright information
     "hideLogoCopyright": true,

     // This option specifies a custom logo image
     "copyrightLogo": "../../../sapLogo.png",

     // This option specifies both lines of the copyright message
     "copyrightMsg": ["Copyright 2016 SAP", "All rights reserved."],

     // This option skips the passcode screen
     "disablePasscode": false

     // This option specifies the css file used to customize the logon screen
     "styleSheet": "../../../custom.css"
  }
};
sap.Logon.startLogonInit(appDelegate, context);

(static) unlock(onsuccess, onerror)

Unlock the Logon plugin's secure data vault if it has been locked (due to being inactive, or sap.Logon.lock being called), then the user is prompted for the passcode to unlock the application.
If the application is already unlocked, then nothing will be done.
If the application has passcode disabled, then passcode prompt will not be necessary. In all cases if an error does not occur, the success callback is invoked with the current logon context as the parameter.
Parameters:
Name Type Description
onsuccess sap.Logon~successCallback The callback to call if the screen flow succeeds. onsuccess will be called with the current logon context as a single parameter.
onerror sap.Logon~errorCallback The callback to call if the screen flow fails.
Example
var errorCallback = function(errorInfo){
    alert("Error: " + JSON.stringify(errorInfo));
}
var successCallback = function(context){
    alert("Registered and unlocked.  Context: " + JSON.stringify(context));
}
sap.Logon.unlock(successCallback,errorCallback);

Type Definitions

errorCallback(errorObject)

Callback function that is invoked in case of an error.
Parameters:
Name Type Description
errorObject Object Depending on the origin of the error the object can take several forms. (Unfortunately the error object structure and content is not uniform among the platforms, this will probably change in the future.) Errors originating from the logon plugin have only an 'errorKey' property. The possible values for 'errorKey': ERR_CHANGE_TIMEOUT_FAILED ERR_FORGOT_SSO_PIN ERR_INIT_FAILED ERR_INVALID_ACTION ERR_INVALID_STATE ERR_PASSCODE_REQUIRES_DIGIT ERR_PASSCODE_REQUIRES_LOWER ERR_PASSCODE_REQUIRES_SPECIAL ERR_PASSCODE_REQUIRES_UPPER ERR_PASSCODE_TOO_SHORT ERR_PASSCODE_UNDER_MIN_UNIQUE_CHARS ERR_REGISTRATION_CANCEL ERR_REG_FAILED ERR_REG_FAILED_UNATHORIZED ERR_REG_FAILED_WRONG_SERVER ERR_SETPASSCODE_FAILED ERR_SET_AFARIA_CREDENTIAL_FAILED ERR_SSO_PASSCODE_SET_ERROR ERR_UNKNOWN_SCREEN_ID ERR_UNLOCK_FAILED ERR_USER_CANCELLED ERR_PASSCODE_EXPIRED Errors originating in the logon core (either iOS or Android) have the following properties: 'errorCode', 'errorMessage', and 'errorDomain'. The 'errorCode' is just a number uniquely identifying the error. The 'errorMessage' property is a string with more detailed information of what went wrong. The 'errorDomain' property specifies the domain that the error occurred in. On iOS the 'errorDomain' property of the core errors can take the following values: MAFLogonCoreErrorDomain, MAFSecureStoreManagerErrorDomain, and MAFLogonCoreCDVPluginErrorDomain. In the MAFLogonCoreErrorDomain the following errors are thrown (throwing methods in paren): 3 errMAFLogonErrorCommunicationManagerError (register, update settings, delete, change backend password) 9 errMAFLogonErrorCouldNotDecideCommunicator (register) 11 errMAFLogonErrorOperationNotAllowed (all) 12 errMAFLogonErrorInvalidServerHost (register) 13 errMAFLogonErrorInvalidBackendPassword (changeBackendPassword) 15 errMAFLogonErrorUploadTraceFailed (uploadTrace) 16 errMAFLogonErrorInvalidMCIMSSOPin (setMCIMSSOPin) 18 errMAFLogonErrorCertificateKeyError (register) 19 errMAFLogonErrorCertificateError (register) 20 errMAFLogonErrorAfariaInvalidCredentials (setAfariaCredentialWithUser) In the MAFSecureStoreManagerErrorDomain the following errors are thrown (throwing methods in paren): 0 errMAFSecureStoreManagerErrorUnknown (persist, unlock, changePasscode, delete, getContext) 1 errMAFSecureStoreManagerErrorAlreadyExists (persist) 2 errMAFSecureStoreManagerErrorDataTypeError (unlock, getContext) 3 errMAFSecureStoreManagerErrorDoesNotExist (unlock, persist, getContext) 4 errMAFSecureStoreManagerErrorInvalidArg unlock, (persist, getContext) 5 errMAFSecureStoreManagerErrorInvalidPassword (unlock) 6 errMAFSecureStoreManagerErrorLocked (getContext) 7 errMAFSecureStoreManagerErrorOutOfMemory (persist, unlock, changePasscode, delete, getContext) 8 errMAFSecureStoreManagerErrorPasswordExpired (unlock, getContext) 9 errMAFSecureStoreManagerErrorPasswordRequired (persist, changePasscode) 10 errMAFSecureStoreManagerErrorPasswordRequiresDigit (persist, changePasscode) 11 errMAFSecureStoreManagerErrorPasswordRequiresLower (persist, changePasscode) 12 errMAFSecureStoreManagerErrorPasswordRequiresSpecial (persist, changePasscode) 13 errMAFSecureStoreManagerErrorPasswordRequiresUpper (persist, changePasscode) 14 errMAFSecureStoreManagerErrorPasswordUnderMinLength (persist, changePasscode) 15 errMAFSecureStoreManagerErrorPasswordUnderMinUniqueChars (persist, changePasscode) 16 errMAFSecureStoreManagerErrorDeleted (unlock) In the MAFLogonCoreCDVPluginErrorDomain the following errors are thrown: 1 (init failed) 2 (plugin not initialized) 3 (no input provided) On Android the 'errorDomain' property of the core errors can take the following values: MAFLogonCoreErrorDomain and MAFLogonCoreCDVPluginErrorDomain. There are no logon specific error codes, the 'errorCode' property only wraps the error values from the underlying libraries.

getSuccessCallback(value)

Callback function that is invoked upon successfully retrieving an object from the DataVault.
Parameters:
Name Type Description
value Object The object that was stored with the given key. Can be null or undefined if no object was stored with the given key.

successCallback(context)

Callback function that is invoked upon successfully registering or unlocking or retrieving the context.
Parameters:
Name Type Description
context Object An object containing the current logon context. Two properties of particular importance are applicationEndpointURL, and applicationConnectionId. It also includes options to customize the UI. The context object contains the following properties:
"registrationContext": {
        "appName": The name of the app.
        "serverHost": Host of the server.
        "domain": Domain for server. Can be used in case of SAP Mobile Platform communication.
        "resourcePath": Resource path on the server. The path is used mainly for path based reverse proxy but can contain a custom relay server path as well.
        "https": Marks whether the server should be accessed in a secure way.
        "serverPort": Port of the server.
        "user": Username in the backend.
        "password": Password for the backend user.
        "farmId": FarmId of the server. Can be nil. Used in case of Relay server or SiteMinder.
        "communicatorId": Id of the communicator manager that will be used for performing the logon. Possible values: IMO / GATEWAY / REST
        "securityConfig": Security configuration. If nil, the default configuration is used.
        "mobileUser": Mobile User. Used in case of IMO manual user creation.
        "activationCode": Activation Code. Used in case of IMO manual user creation.
        "gatewayClient": The key string that identifies the client on the gateway. Used in Gateway only registration mode. The value will be used as adding the parameter: sap-client=
        "gatewayPingPath": The custom path of the ping URL on the gateway. Used in case of Gateway only registration mode.
        "custom": {
                "backgroundImage": Background for the Logon UI; the default is "../../../background.jpg"
                "hiddenFields": An array for field names to be hidden, e.g. ["resourcePath", "farmId", "securityConfig"]
                "hideLogoCopyright": This option hides the logo and copyright information
                "copyrightLogo": This option specifies the logo in the footer; default is "../../../sapLogo.png"
                "copyrightMsg": This option specifies both lines of the copyright message, e.g. ["Copyright 2016 SAP", "All rights reserved."]
                "disablePasscode": This option skips the passcode screen
                "styleSheet": This option specifies the css file used to customize the logon screen; the default is "../../../custom.css"
        }
}
"applicationEndpointURL": Contains the application endpoint URL after a successful registration.
"applicationConnectionId": ID to get after a successful SUP REST registration. Needs to be set in the download request header with key X-SUP-APPCID
"afariaRegistration": manual / automatic / certificate
"policyContext": Contains the password policy for the secure store {
        "alwaysOn":
        "alwaysOff":
        "defaultOn":
        "hasDigits":
        "hasLowerCaseLetters":
        "hasSpecialLetters":
        "hasUpperCaseLetters":
        "defaultAllowed":
        "expirationDays":
        "lockTimeout":
        "minLength":
        "minUniqueChars":
        "retryLimit":
}
"registrationReadOnly": specifies whether context values are coming from clientHub / afaria
"policyReadOnly": specifies whether passcode policy is coming from afaria
"credentialsByClientHub": specifies whether credentials are coming from clientHub

successCallbackNoParameters()

Callback function that will be invoked with no parameters.