[Login] Make the FHIR & KeyCloak server details configurable #1861
Replies: 15 comments
-
Do we need a design for this? @dubdabasoduba |
Beta Was this translation helpful? Give feedback.
-
Since this has that data deletion implication, should an app config be able to control whether this option shows to the users at all? Do you have to be logged in to access this menu? |
Beta Was this translation helpful? Give feedback.
-
Nope, you can only access it when logged out. It's mostly for initial setups. Yes, I think we can hide or show it based on a configuration. |
Beta Was this translation helpful? Give feedback.
-
@ellykits @Rkareko Do you guys think moving some of these configs to the config_application makes sense? We can have the sensitive bits added to the app via the settings page. But the rest I think can be on the cc: @f-odhiambo |
Beta Was this translation helpful? Give feedback.
-
I think we can also have the sensitive parts added via the configs. We just have to encrypt and then write the decrypting functionality on the FHIRCore app. This would make the device setup easier since the user won't have to type anything that concerns the server setup. |
Beta Was this translation helpful? Give feedback.
-
R&D requirements
|
Beta Was this translation helpful? Give feedback.
-
I foresee some challenges with the above approach, mainly in how we'd share the encryption key between the server and the client. We might need to research some more on this to make sure we exhaust any possible approaches there. Also if we use that approach I think we only really need to secure the OAUTH Client Secret, the availability of all the others should be fine publicly. We could however encrypt both the OAUTH Client ID and Secret. We could also explore an alternative approach that does not requires us to use cryptography but rely entirely on Keycloak. How this would work is that we can have a web page on the FHIR Web portal that has the QR code with details of the server of interest. In the case that we need to support a situation where the same user can log into multiple servers then we could have a number of QR codes displayed alongside their Server IDs to help easily identify them. Sample workflow would look like this:
Pros
Cons
|
Beta Was this translation helpful? Give feedback.
-
yea good points, let me review in further depth, unassigning @allan-on for until we've resolved and unblocked |
Beta Was this translation helpful? Give feedback.
-
I'm not sure how to prioritize this issue, a lot of this sounds like useful for debugging, maybe important enough it's high priority, but this feature is not anything we'd want users to have to use, you'd be using it if something went wrong. When setting up clients on phones, I don't think it would ever be routine to change these settings. I also get the sense there are a couple issues that need to support the UI portion of this issue. Like loading these settings from the app config files, is that something we do now, or is that something new? From the UX angle, we want to minimize the work the user has to do. Right now they have to enter an app ID and then a username/login, it's hard to get around that as a minimum. If we think of the default settings in the client as pointing to a federation server, maybe when someone enters the app ID, it then pulls that app ID which could change these settings, change the server URLs, then the user logs in, it pulls the rest of the app config from the new server URL, auths against the new keycloak URL, proceeds. |
Beta Was this translation helpful? Give feedback.
-
@ndegwamartin @pld
How to achieve this right now
The proposal
Implementation proposal that uses the configuration work
Proposed implementation user workflow
@pld I agree this is not a priority for the clients we support and any that have tech teams. I think it increases our configurability capabilities. |
Beta Was this translation helpful? Give feedback.
-
Cool, I think for now only allowing the URL to be modified, pushing everything else to the app config and keeping it out of the local props/not requiring an APK build makes sense |
Beta Was this translation helpful? Give feedback.
-
this'll start coming up more and more esp as we have multiple FHIR servers we host, so that definitely gives it priority, it'd be less effort to do a server urls/etc in config files issue than to maintain multiple APKs just for the sake of modifying those values |
Beta Was this translation helpful? Give feedback.
-
If we determine that at any one time the provider/user can only be assigned to one application (read one App ID) then after the settings configurations load, the app could launch a WebView which loads/points to a secured Frontend web endpoint with a JSON response that has the OAUTH details above. Since it is secured by user(Keycloak) credentials the values (json response) will only be returned after the user authenticates (Web view will redirect/provide the Keycloak login page). We could then parse that response to persist the values of interest therein. This approach removes the requirement stated above of having at least two devices to scan a QR Code for the OAuth details. |
Beta Was this translation helpful? Give feedback.
-
In the case that we will still be editing the local.properties file as tracked by this discussion then we might not need to have this process as configurable. |
Beta Was this translation helpful? Give feedback.
-
@ndegwamartin This method will work for the implementations we manage or the clients with tech teams. This issue is meant to address situations where a client just picks the Quest APK and wants to use it as is. |
Beta Was this translation helpful? Give feedback.
-
Feature context
Describe the enhancement
Beta Was this translation helpful? Give feedback.
All reactions