Example #1
0
 *
 * Notice:
 * Query parameters must be encoded as UTF-8 to avoid hash conflicts on server side. Make sure that all data inside the hash is converted to lower case.
 * The timestamp is used to block requests that are older than a defined expire time. Make sure that the client has the correct UTF-8 time. If not the request will fail and returns the
 * current server date as header field "date". Uses this date to make a time correction client side and retry request with adjusted date time.
 *
 * It is also possible to use a different hash algorithm than SHA256. This can be set in header field "signatureMethod".
 * Currently this functionality is not implemented so default is SHA256.
 */

var _ = require('lodash')
    , MiaJs = require('mia-js-core')
    , Logger = MiaJs.Logger
    , Shared = require('mia-js-core').Shared
    , RateLimiter = require('mia-js-core').RateLimiter
    , AuthService = Shared.libs("generic-deviceAndSessionAuth")
    , Crypto = require('crypto')
    , Url = require('url')
    , IP = require('ip')
    , Translator = MiaJs.GetTranslations
    , SecretModel = Shared.models('generic-secret-model')
    , DeviceModel = Shared.models('generic-device-model')
    , Q = require('q');

Q.stopUnhandledRejectionTracking();

function thisModule() {
    var self = this;

    self.identity = 'generic-validateAccessKey'; // Controller name used in routes, policies and followups
    self.version = '1.0'; // Version number of service
/**
 * generic-accessKeyService
 *
 * @module      :: Policy
 * @description :: Validates device access to retrieve a session key
 */

var _ = require('lodash')
    , MiaJs = require('mia-js-core')
    , Logger = require('mia-js-core').Logger
    , Shared = require('mia-js-core').Shared
    , AuthService = Shared.libs("generic-deviceAndSessionAuth");

function thisModule() {
    var self = this;

    self.identity = 'generic-accessKeyService'; // Controller name used in routes, policies and followups
    self.version = '1.0'; // Version number of service

    self.preconditions = {
        all: {
            parameters: {
                header: {
                    key: {
                        desc: "ApiKey",
                        type: String,
                        minLength: 64,
                        maxLength: 64,
                        required: true
                    }
                },