Yes, Qlik don't have users in that manner. We can do NTML or Kerberos as we ship a LDAP user connector out of the box so we can pass through authentication in that manner. For other types of authentication you would use the QPS API to either issue tickets to users or pass on a existing session into Qlik.
All of this is enabled through certificate trust. Qlik Sense generates certificates for it's services and you can export certificates from QMC. So if your service signs the requests with the certificates, we will trust you. We will also trust that you have authenticated your users when you request a ticket or pass on a session.
However since it sounded like you are going to be parsing a large number of apps in a short time frame you will be hit by the 5 session limit imposed on user authentication. Instead I would recommend you open a websocket channel directly to the engine wss://<server>:4747/app/<enginesession> and supply a X-Qlik-User header that specifies a service user. That will allow you to bypass the 5 session limit and if you sign your requests using the certificates there is no need to authenticate as we trust the signed requests.
There are no REST endpoints available if you wish to interact with the application so you would use the Engine API to do that.
Just as a follow-up, if you are just looking to access the raw data that resides in a Qlik app you can dump tables to CSV files during script reload execution using the STORE loadscript command.
That will most likely be faster then send potentially massive amounts of data over the socket and you don't have to burden your Qlik server with having to load all apps into memory.
If you are looking at leveraging Qlik's on-demand calculation and aggregation engine, then yes you would use the Engine API.
I am trying to fetch the DocList from QES in C# as you explained.
Seems that the auth by certificate is working because my Response status is completed, but i'm getting 404 as http status.
I am attaching 2 sample test functions: Using HttpWebRequest and RestSharp. Both fail with the same message.
Do you have any idea about what I may be doing wrong?
EDIT: I have tried using websockets (websocket-sharp) but am still getting errors.
I have attached my test function and the stacktrace.
Any idea why the connection is failing? (seems to be the initial handshake)
Any clues where to look in the log files?
With thanks and regards,
Yes, I was able to connect using Java. I used NVWebSocket library for Java Web sockets. I had to import the certificates to a Java Keystore and use that to load the ssl context. One requirement is that your server url should have an entry in the proxy whitelist. I haven't tried much but I was able to call few global methods like getting the document list. Hope it helps.
The following examples helped: Java-WebSocket/SSLClientExample.java at master · TooTallNate/Java-WebSocket · GitHub
May i know how do you import the certificate (export from Qlik) to java keystore and use them in Java?