OK.
So I think maybe your last post is misleading. As i understood from the docs, there are 2 possibilities to launch weasis, even 3 if we count the old /viewer protocol
1) using native installed version of weasis
- no need for weasis-pacs-connector.war
- no need for weasis.war
-no need to install java on the client computer
- only need installed native version of weasis which is launched from the web with the link of type weasis://$dicom:rs
- in this case you are supposed to just modify in dcm4chee-arc-ui
Configuration > Devices > dcm4chee-arc > Extensions > Edit extension > Child Objects > Web Applications > DCM4CHEE and add 3 (in the docs is mentioned that there actually are four propetries) properties listed there (again in the webpage with instructions there is mention of four properties to be added but only 3 are listed and they work without secured restful services):
IID_PATIENT_URL=weasis://$dicom:rs --url "{{qidoBaseURL}}{{qidoBasePath}}" -r "patientID={{patientID}}" --query-ext "&includedefaults=false" -H "Authorization: Bearer {{access_token}}" IID_STUDY_URL=weasis://$dicom:rs --url "{{qidoBaseURL}}{{qidoBasePath}}" -r "studyUID={{studyUID}}" --query-ext "&includedefaults=false" -H "Authorization: Bearer {{access_token}}" IID_URL_TARGET=_self
-when you press the eye button an url starting with weasis:// should launch weasis (which is installed on your oc) from webcontext with given URL which is supposed to have in the http header the access token
2) using weasis-pacs-connector and weasis.war
- install weasis-pacs-connector.war, weasis.war, and optional other packages by deploying them with wildfly console
- configure weasis-pacs-connector.properties and dicom-dcm4chee-arc.properties, files downloaded from the same page with instructions in the standalone/configuration folder of wildfly
- here, for version 5.22.0 (I have 5.23) there is mention only for dokker, and says that the & character must be escaped (e.g. IID_STUDY_URL=../../weasis-pacs-connector/weasis?studyUID={{studyUID}}\&access_token={{access_token}})
- there is also mention for 5.19.1 and on to edit Configuration > Devices > dcm4chee-arc > Extensions > Edit extension > Child Objects > Web Applications > DCM4CHEE with totally different froperty formats, like:
Secured, from 5.22.2
IID_PATIENT_URL=../../weasis-pacs-connector/weasis?patientID={{patientID}}&access_token={{access_token}}
IID_STUDY_URL=../../weasis-pacs-connector/weasis?studyUID={{studyUID}}&access_token={{access_token}}
IID_URL_TARGET=_self
Secured
from 5.22.2 (Running only the local native version of Weasis (when not connected to a remote version - weasis.war so if you don't want to download weasis.war from the server). In this case I understand &cdb should be added to the url and/or in weasis-pacs-connector.properties we should comment out the lineweasis.base.url=${server.base.url}/weasis or set it to null
IID_PATIENT_URL=../../weasis-pacs-connector/weasis?patientID={{patientID}}&cdb&access_token={{access_token}}
IID_STUDY_URL=../../weasis-pacs-connector/weasis?studyUID={{studyUID}}&cdb&access_token={{access_token}}
IID_URL_TARGET=_self
I don't know itf the escaped \& should be used here in ubuntu or only with dokker
IN the weasis-pacs-connector.properties there is mention that a file weasis.jnlp should be placed in the same folder as this file (i don't have it but in my old version with archive v5.11 there was none and it works). Using this setup when you press the eye button weasis pacs connector should download weasis.jnlp which basically has the java app weasis and pass to it the url which are opened with java which has to be installed on the computer.
3) using weasis as a web applet directly in browser using java webstart with weasis-pacs-connector using /viewer as setting in weasis-pacs-connector.properties.... deprecated as java webstart is blocked in recent browsers.... actually no updated instructions available
So I tested the first 2 setups.
1) the first setup works without secured restful services only with instructions from the webpage.
it does not work for secured restful services enabled. Here I don't understand how the UI knows from where to get the token if it doesn't have defined a connector. the dcm4chee-arc-ui is a public type connector and does not have the role to give tokens. It seems to be only for the interface auth. In the restful services activation tutorial a dcm4chee-arc-rs deployment ("dcm4chee-arc-war-5.23.0-secure.war") resource is defined in dcm4chee-arc.xml as bearer-only. I thought maybe a bearer-only type keycloak connector should be added for this. but in dcm4chee ui interface there is no possibility to put a bearer-only tipe keycloak client, only client_credentials. I think here the documentation needs a little clarification. Logically for me it would be that when pressing the eye button the dcm4chee web interface should connect to the keycloak client of type bearer-only , get the token and pass the url with token in http(s) header to the weasis app.
2) the second setup does not work at all. I get the error: Cannot not get a valid manifest URL null/weasis-pacs-connector/RequestManifest?id=2
here in the old setup with version 5.11 of dcm4chee-arc-secure-ui I introduced those kind of urls in the fields
Invoke Image Display Patient URL :../../weasis-pacs-connector/IHEInvokeImageDisplay?requestType=PATIENT&patientID={}
Invoke Image Display Study URL: ../../weasis-pacs-connector/IHEInvokeImageDisplay?requestType=STUDY&studyUID={}
IN the 5.23.0 web interface we can find
So there must be some inconsistencies in the keycloak authorisation system used for secured restful services that are not present in the tutorials.
Anyway, thank you for your time. I would appreciate it you could post the mechanism by which secured restful services work, which connects where, token generated from who, etc.
Kind regards,
Dr. Dragos Zaharia