cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X

What is causing 'ReferenceError: "Authenticators" is not defined'?

sclifford
1-Newbie

What is causing 'ReferenceError: "Authenticators" is not defined'?

Hi,

Version: Thingworx 7.1.1

I want to get the ConfigurationTable of a custom Authenticator via a service of a Thing. I need to retrieve a configuration property.

To demonstrate, I am using the ThingworxMobileAuthorizationAuthenticator. The behaviour is the same as for the custom Authenticator.

Using Postman works fine, but when I try to code it using the Entities tab in the Service script, like so:

I get this error when I test it:

What does this mean?

Thank you,

Shane

2 REPLIES 2
ankigupta
5-Regular Member
(To:sclifford)

Hi Shane Clifford​,

Attached is the export of Authenticators_ThingworxMobileTokenAuthenticator from my instance 7.2.3 and there is no configuration table for it.

Does your custom Authenticator have a Configuration Table?

Also, could please share more details about your custom Authenticator and how it works with postman.

Thanks,

Ankit Gupta

Hi Ankit Gupta​,

Thanks for your reply. Copy and pasted the wrong Authenticator name

I meant ThingworxMobileAuthorizationAuthenticator, which has a configuration table named AuthenticatorConfiguration.

Here's the Postman request:

POST /Thingworx/Authenticators/ThingworxMobileAuthorizationAuthenticator/Services/GetConfigurationTable HTTP/1.1

Host: localhost:8081

appKey: <my_app_key>

Content-Type: application/json

Accept: application/json

Cache-Control: no-cache

Postman-Token: c4df65fa-f5f6-6cca-380c-dc578c00ab4a

{

    "tableName": "AuthenticatorConfiguration"

}

And here's the response:

{

  "dataShape": {

    "fieldDefinitions": {

      "tokenLifeTime": {

        "name": "tokenLifeTime",

        "description": "Token LifeTime",

        "baseType": "LONG",

        "ordinal": 0,

        "aspects": {}

      },

      "generateTokens": {

        "name": "generateTokens",

        "description": "Return generated tokens",

        "baseType": "BOOLEAN",

        "ordinal": 0,

        "aspects": {}

      }

    }

  },

  "rows": [

    {

      "tokenLifeTime": 2592000,

      "generateTokens": true

    }

  ]

}

Now, trying the following in a Service script:

var params = {

  tableName: "AuthenticatorConfiguration" /* STRING */

};

// result: INFOTABLE

var result = Authenticators["ThingworxMobileAuthorizationAuthenticator"].GetConfigurationTable(params);


Returns:

Error executing service

ReferenceError: "Authenticators" is not defined. (getConfigTable#6)

Details of our custom authenticator (which works successfully) isn't needed here, as the error received is precisely the same for the Thingworx Authenticator.

The custom authenticator stores a value in its configuration table during authorisation. Once logged into the instance, we need to a service that will read the property from our Authenticators configuration table.

Why does Thingworx Composer provide Authenticators under the Entities tab for coding a Script of a Service, and then throw a ReferenceError saying "Authenticators" is not defined... seems like a bug?

Thank you,

Shane

Top Tags