Using One-Time URL for single sign-on scenarios or one-time invitations

Thinfinity® VirtualUI offers a special access method called “One-Time URL”. This mechanism was designed to create a temporary, unique url to provide one-time access to a specific application. This temporary url is disposed as soon as it is used or after a specified period of time has elapsed.
These are the main scenarios where the One-Time URL access method is most useful:

  • Single Sign-on scenarios.
  • External authentication methods.
  • One-time invitations to run a program  (i.e. application demos/presentations).

How it works

The One-Time URL is a unique, disposable URL leading to a specific VirtualUI application. What makes it useful is that it allows for passing credentials and/or custom data to the application through an independent secure channel, hidden to the end user.

single sign-on dialog scheme

A usual scenario involves a backend service (ie. a web server), where the user’s credentials are validated. This backend service communicates with a VirtualUI Server to request the creation of a One-Time URL, passing information about the application to run, credentials and custom data. This information is stored temporarily and indexed by a unique access key. Also, a random passcode is created and used to encrypt the stored information. This access key and passcode are returned to the backend service to build the final One-Time URL.
Once the user is directed to the provided URL (automatically or by clicking on a link), VirtualUI validates the access key and passcode and starts the application passing the associated data. Finally, this key and associated data are removed from memory and therefore the URL becomes invalid. The same happens if the URL was not used for the amount of time specified in the creation request.

Creating a One-Time URL

The VirtualUI Server processes a One-Time URL creation request in the form of an http(s) request, as follows:

serverurl + "/ws/oturl/get?apikey=" + apikey + "&accesskey=" + accesskey +
    "&userid=" + userid + "&password=" + password + "&customdata=" + customData +
    "&plen=" + passlen + "&expires=" + expires,


serverurl optional VirtualUI Server address (protocol, domain and port)
apikey required VirtualUI installation [API] key. Find this information in Thinfinity.VirtualUI.Server.ini at C:\ProgramData\Cybele Software\Thinfinity\VirtualUI
accesskey required Identifies the application that will be run. Complete this parameter with the “access key” parameter found in the application profile in the VirtualUI Server Manager.
userid optional A valid user that meets the criteria set in the application profile’s ‘Permission’ tab.
password optional The password of the user specified in the ‘userid’ parameter.
customdata optional Use this field to send any information you may need to make available to the application. This is the right place to pass sign-on credentials. This information will be accessible in the application through the BrowserInfo.CustomData property.
plen optional Length of the passcode to be returned.
expires optional Ticket expiration time, in minutes.

If the request is unsuccessful, the following HTTP codes can be received:

  • 400: Invalid parameters
  • 401: Userid/password invalid

If the request is successful, the http call returns a 200 HTTP status code, and a JSON object consisting of two fields:

    "key": "LnJwsxGHp5d@6MHeiEswRdfxFCiIcLAUttRS$9FSUs-Utz3o",

With this information, the backend can build the final URL,following this format:


Here’s an example that uses the JSON object shown above:



Single Sign-on Sequence Example

The sequence diagram below shows a complete one-time-URL example using single sign-on. In this example, the same credentials —the ‘jdoe’ username and ‘pass’ password—  are first used for the single sign-on, and then sent to the application in the customdata parameter.
single sign-on sequence
In conclusion, the One-Time URL offers a useful way to extend web-enhanced applications to new scenarios. We are fully convinced that you will greatly benefit from this new Thinfinity® VirtualUI feature.
Have any questions? Contact us at [email protected] or leave a message on this same post.

Comments (3)

Hi Andrew,
Thanks for your inquiry. We need to know the version you’re running and some other information to investigate.
I’ll send you an email to work with you.
Best regards,

I’ve set up application with anonymous access and would like to authenticate user passing token in “customdata”. However when trying to obtain one-time URL parameters I’m receiving “You do not have permission to view this directory or page using the credentials that you supplied” disregarding whether I specify empty userid and password or omit them at all.
Could you please explain all the required preconditions in more details?

Leave a comment

Privacy Preferences
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.