For easy communication between external services and UnityBase server in UB>=1.9 we implement authorization based on client IP address.

Enable IP based authorization #

UBIP authentication method must be added to authMethods parameter of application configuration

Set who can use it #

In uba_user entity fill trustedIP attribute with semicolon-separated list of trusted IP addresses for user you want to authorize using IP

Make a request #

To make an authorized request to UnityBase using IP based authorization simply add header:

Authorization: UBIP yourUserName

to your HTTP requests.

Examples #

ApacheBench #

ab.exe -v3 -H "Authorization: UBIP admin" http://127.0.0.1:888/autotest/auth

Using wget to get entity content #

wget.exe --header="Authorization: UBIP admin" --post-data="[{\"entity\": \"ubm_enum\", \"method\": \"select\", \"fieldList\": [\"*\"]}]" http://localhost:888/autotest/runList

Using wget to get user details #

wget.exe --header="Authorization: UBIP admin" http://localhost:888/autotest/auth

Using browser side UBConnection with UBIP schema #

var conn = new UBConnection({ 
    host: '127.0.0.1:888', 
    appName: 'autotest', 
    requestAuthParams: function(conn, isRepeat){
        if (isRepeat){ 
            throw new UB.AbortError('invalid') 
        } else { 
            return Promise.resolve({authSchema: 'UBIP', login: 'admin'}); 
        } 
    }
});
conn.run({entity: 'uba_user', method: 'select', fieldList: ['ID', 'name']}).then(UB.logDebug)

Using low-level UB http client (server side) #

var 
    http = require('http');
 
var req = http.request({
    host: '127.0.0.1', port: '888', path: '/autotest/runList', method: 'POST',
    headers: {Authorization: 'UBIP admin'}
});
var resp = req.end([{
    entity: 'uba_user', 
    method: 'select', 
    fieldList: ['ID', 'name'], 
    options: {start: 0, limit: 10}
}]);

Using of hi-level server-side UBConnection #

var 
  SyncConnection = require('@unitybse/base').SyncConnection,
  conn1;
conn1 = new SyncConnection({
    host: 'localhost', 
    port: '888', 
    path: 'autotest', 
    keepAlive: true
});
conn1.onRequestAuthParams = function(){ 
    return {authSchema: 'UBIP', login: 'admin'} 
};
conn1.run({entity: 'ubm_navshortcut', method: 'select', fieldList: ['ID', 'code']})